Используйте знаки сравнения внутри оператора sql case

Я ищу способ построить операторы case в запросе sql select с использованием знаков «меньше» и «больше». Например, я хочу выбрать рейтинг на основе переменной:

DECLARE @a INT
SET @a = 0

SELECT CASE 
         WHEN @a < 3 THEN 0
         WHEN @a = 3 THEN 1
         WHEN @a > 3 THEN 2
       END

Я хотел бы записать его как:

DECLARE @a INT
SET @a = 0

SELECT CASE @a
         WHEN < 3 THEN 0
         WHEN 3 THEN 1
         WHEN > 3 THEN 2
       END

... но SQL не позволяет мне использовать знаки <и> таким образом. Есть ли способ, которым я могу это сделать, - это SQL 2005, или мне нужно использовать код, как в первом.

Причина, по которой код там нужен только один раз, заключается в том, что это сделало бы код намного более читаемым / поддерживаемым, а также потому, что я не уверен, придется ли SQL-серверу выполнять вычисления для каждого оператора CASE.

Я ищу эквивалентный оператор case VB.NET:

Select Case i
    Case Is < 100
        p = 1
    Case Is >= 100
        p = 2
End Select

Возможно, это невозможно в SQL, и это нормально, я просто хочу подтвердить это.

20
задан Greg 27 February 2012 в 05:34
поделиться