2013-04-15 18 views
4

我創建select語句來比較男性和女性,並替換一些值。我有兩張桌子。在select語句中使用運算符使用大小寫sql server2008

表1:

  • 男(TRUE或FALSE)
  • 女(TRUE或FALSE)

表2:

  • 性別 - 值('M','F','B')

我想創建從表2中的select語句表1。我的查詢如下,

select 'insert into table1(Male,female)values('+ 
    Isnull(cast(case Gender when 'M' or 'B' Then '''True''' else '''false''' end as varchar),'NULL')+','+ 
    Isnull(cast(case Gender when 'F' or'B' Then '''True''' else '''false''' End as varchar),'NUll')+')' 
    from Table2 

但我在得到錯誤或操作不使用在這裏。如何使用運算符來選擇兩個值。任何人建議我...

回答

2

你可以嘗試這樣的:

select 'insert into table1(Male,female)values('+ 
    Isnull(cast(case when Gender = 'M' or Gender = 'B' Then '''True''' else '''false''' end as varchar),'NULL')+','+ 
    Isnull(cast(case when Gender = 'F' OR Gender = 'B' Then '''True''' else '''false''' End as varchar),'NUll')+')' 
    from Table2 

或像這樣:

select 'insert into table1(Male,female)values('+ 
    Isnull(cast(case Gender when 'M' Then '''True''' when 'B' Then '''True''' else '''false''' end as varchar),'NULL')+','+ 
    Isnull(cast(case Gender when 'F' Then '''True''' when 'B' Then '''True''' else '''false''' End as varchar),'NUll')+')' 
    from Table2 
+0

第一個是好的。這是工作。 – Duk

1
select 'insert into table1(Male,female)values('+ 
    Isnull(cast(case Gender when 'M' or Gender when 'B' Then '''True''' else '''false''' end as varchar),'NULL')+','+ 
    Isnull(cast(case Gender when 'F' or Gender when 'B' Then '''True''' else '''false''' End as varchar),'NUll')+')' 
    from Table2 

試試這個查詢。

希望它有幫助。

+0

我學會了「或」操作符僅在我們使用「等於」運算符時使用。 – Duk

2

使用動態SQL需要聲明一個變量。它也將幫助您進行代碼測試

DECLARE @dml nvarchar(max) = N'' 
select @dml += 'insert into table1(Male,female)values('+ 
    Isnull(cast(case when Gender IN('M', 'B') 
        Then '''True''' else '''false''' 
       end as varchar),'NULL')+','+ 
    Isnull(cast(case when Gender IN('F', 'B') 
        Then '''True''' else '''false''' 
       end as varchar),'NUll')+')' + CHAR(13) + CHAR(10) 
from Table2 
PRINT @dml