2010-01-05 40 views
8

有没有一种方法来检查的案件时是在一个数组:SQL CASE [Column] WHEN IN('case1','case2')THEN'oops'END?

SELECT CASE [Option] WHEN IN (1, 3, 99) THEN 'Wrong option' ELSE 'You go!' END 
+0

不知道你的意思是什么 – 2010-01-05 04:27:10

+0

数组在哪里? – 2010-01-05 04:32:13

+0

我想检查一下Option是否等于(1, 3,99)应该返回'错误的选项',否则 - '你去!'。 – Shimmy 2010-01-05 04:33:40

回答

18
SELECT CASE WHEN [Option] IN (1, 3, 99) THEN 'Wrong option' ELSE 'You go' END 
4

可以使用CASE WHEN <predicate> THEN <value> ... END选项,而不是CASE <value> WHEN <value> THEN <value> ... END选项。

SELECT CASE WHEN [Option] IN (1, 3, 99) THEN 'Wrong option' ELSE 'You go!' END 

...但如果值是在一个表,你可以只是一个外部联接(和

CASE WHEN t.Value IS NULL THEN 'Not in list' ELSE 'In list' END 

,或者

CASE WHEN EXISTS (SELECT * FROM yourTable t WHERE t.value = [Option]) THEN 'Bad' ELSE 'Ok' END 

...没有加入