При использовании CASE
заявления, я понимаю, что в соответствии с documentation я могу либо использовать простую CASE
выражения, с input_expression
и парами when_expression
и result_expression
значений (предположит, что в этих примерах, что значения в myField
всегда положительные целые числа):Использование IN в операторе CASE без повторения входного выражения?
CASE [input_expression]
WHEN [when_expression] THEN [result_expression]
...
ELSE [result_expression]
END
CASE myField
WHEN 1 THEN 'One'
WHEN 2 THEN 'Two'
WHEN 3 THEN 'Three'
ELSE 'More than three'
END
или я могу использовать искали CASE
выражение, с парами Boolean_expression
и result_expression
значения:
CASE
WHEN [Boolean_expression] THEN [result_expression]
...
ELSE [result_expression]
END
CASE
WHEN myField = 1 THEN 'One'
WHEN myField = 2 THEN 'Two'
WHEN myField = 3 THEN 'Three'
ELSE 'More than three'
END
Я также знаю, что я могу использовать оператор IN
как часть любого Boolean_expression
при написании искало CASE
выражения:
CASE
WHEN myField IN (1,2) THEN 'One or two'
WHEN myField = 3 THEN 'Three'
ELSE 'More than three'
END
Что было бы действительно полезно было бы иметь возможность использовать оператор IN
при написании простого CASE
выражение, как:
CASE myField
WHEN IN (1,2,3) THEN 'Between one and three'
WHEN IN (4,5,6) THEN 'Between four and six'
WHEN IN (7,8,9) THEN 'Between seven and nine'
ELSE 'More than nine'
END
Но это не будет работать, и выдает ошибку:
Incorrect syntax near the keyword 'IN'.
Очевидно, что мой пример выше надуман, но есть ли способ написать простое выражение CASE
, а также использовать оператор IN
?
Я понимаю, от чтения синтаксиса MSDN, что кажется, что это не возможно, из-за того, как формируется простая CASE
выражения - сравнивая input_expression
каждого when_expression
равенства - но я просто подумал, что есть любой вид пути для достижения того, что я прошу, поскольку было бы удобно сохранять одно и то же имя поля снова и снова в каждом предложении WHEN
искомого выражения CASE
.
Неа. У этого нет синтаксиса. Ближе всего это ваш третий пример – GurV