4

我创建选择语句来比较男性和女性并替换一些值。我有两张桌子。

表格1:

  • 男(对或错)
  • 女(对或错)

表 2:

  • 性别值('M'、'F'、'B')

我想创建从表 2 到表 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

但是我在或操作员不在这里使用时遇到错误。如何使用运算符选择两个值。有人建议我...

4

3 回答 3

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
于 2013-04-15T06:42:23.180 回答
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
于 2013-04-15T06:38:22.057 回答
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

试试这个查询。

希望它有帮助。

于 2013-04-15T06:37:46.470 回答