SQL CASE [столбец] WHEN IN ('case1', 'case2') THEN 'oops' END? - PullRequest
8 голосов
/ 05 января 2010

Есть ли способ проверить CASE, когда он находится в массиве:

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

Ответы [ 2 ]

21 голосов
/ 05 января 2010
SELECT CASE WHEN [Option] IN (1, 3, 99) THEN 'Wrong option' ELSE 'You go' END
5 голосов
/ 05 января 2010

Вы можете использовать опцию 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

... без объединения.

...