在SQL Server 2008中是否有一种缩写方法来匹配CASE布尔表达式,以及表达式为true时要选择的值?
而不是
CASE
when item='a' then 'Apple'
when item='b' then 'Ball'
when item IN ('c','d') then 'Pet'
when item !='zz' then 'object'
else 'Bad_Item'
我想要一些类似下列之一的东西。这些当然是伪代码,但我们的想法是让关联更紧密,而不是在/然后成对时继续写更多
这样的事情存在吗?
CASE
when item ;(=,'a','Apple')
;(=,'b','Ball') ;(=,'c' or 'd','Pet')
;(!='zz','object') ;'Bad item'
END
这样的事情存在吗?
CASE
when item ;= ('a','b','c' or 'd' : 'Apple','Ball','Pet','Object')
;!= ('zz' : 'Object')
;'Bad item'
END
这些都是伪代码,但只是想知道是否有更快或更简单的东西,或者要检查所有要检查的所有内容的列表,然后选择所有值。
答案 0 :(得分:2)
没有像你描述的简写。您可以使用@ sarwar026提到的备用CASE语法稍微缩短代码,但是他发布的<>
行不起作用。除了相等之外你不能使用那个形式 - 没有不平等,没有使用范围或者&gt; = /&lt; =,没有IN(),甚至没有空检查。
答案 1 :(得分:2)
组合简单CASE
表达式的示例是:
declare @item as VarChar(10) = 'c'
select case @item
when 'a' then 'Apple'
when 'b' then 'Ball'
else case
when @item in ( 'c', 'd' ) then 'Pet'
when @item != 'zz' then 'object'
else 'Bad_Item' end
end
答案 2 :(得分:1)
据我所知,以下作品
CASE item
when 'a' then 'Apple'
when 'b' then 'Ball'
when 'c' then 'Pet'
when 'd' then 'Pet'
// the next line is not possible, so please discard the next line
*when <>'zz' then 'object' // not sure about this syntax*
else 'Bad_Item'
END