2012-03-15 181 views

回答

1

当然。在这里,#TEST被复制到#testnew,那里的情况下语句添加*每个项目之前,与值“F”开头:

create table #test(id int, item1 varchar(10), item2 varchar(10)) 
insert into #test values(1,'foo','bar') 
, (2,'fud','fudge') 
go 

select t.id 
, item1=case when left(item1,1)='f' then '*'+item1 else item1 end 
, item2=case when left(item2,1)='f' then '*'+item2 else item2 end 
into #testnew 
from #test t 
go 

select * from #testnew; 
go 

drop table #test; 
drop table #testnew; 
go 

结果:

id   item1  item2 
----------- ----------- ----------- 
1   *foo  bar 
2   *fud  *fudge 
2

是,您可以:

SELECT CASE SourceField WHEN 1 THEN 'Yes' ELSE 'No' END AS SourceField 
INTO DestinationTable 
FROM SourceTable 
+1

您需要END关键字,对? ELSE'否'END AS SourceField – 2012-03-15 16:43:44

+0

确实,AdaTheDev'END'在哪里? ^^ – 2012-03-15 16:47:41

+0

是的,更正。 – AdaTheDev 2012-03-15 18:04:00

1

是。一定要命名列。还要确保您将Case语句的值转换为显式类型以避免问题。

SELECT 
    Cast((
     Case(ID) 
      When (1) Then 'Text' 
      Else NULL 
     End) as varchar(50) 
    ) as NewColumn 
INTO #TempTable 
FROM MyTable