首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

~SQL话语关于Where中IN后用Case,马上给分!

2013-10-30 
~~~~~~~~~SQL语句关于Where中IN后用Case,马上给分!~~~~~~~statusin (case type_order when A then 30,50

~~~~~~~~~SQL语句关于Where中IN后用Case,马上给分!~~~~~~~


status  in (case type_order when 'A' then 30,50 when 'B' then  20,30 end)


status是int,这样写报错,应该如何写?


[解决办法]
case返回的是一个确定的标量值,30,50这显然不是一个值
select * from tb where (type_order='a' and status in(30,50)) or
(type_order='b' and status in(20,30) )
[解决办法]
引用:

status  in (case type_order when 'A' then 30,50 when 'B' then  20,30 end)


status是int,这样写报错,应该如何写?


把语句改一下,试试:
and
(case type_order when 'A' then ',30,50,' 
                 when 'B' then  ',20,30,' 
 end) like '%,'+cast(status as varchar)+',%' 

热点排行