#tsql #case-when
#tsql #случай-когда
Вопрос:
У меня есть несколько условий, и результат для них должен быть одинаковым. Я искал в сети и нашел что-то вроде этого:
CASE ProductLine
WHEN 'R' THEN 'Road'
WHEN 'M' THEN 'Mountain'
WHEN 'T' THEN 'Touring'
WHEN 'S' THEN 'Other sale items'
ELSE 'Not for sale'
END
Это хорошо, но не то, что мне нужно, для меня это больше похоже на то, что R, M, T и S имеют одинаковый результат, а A, B, C, D, например, не имеют. Как бы я это сделал? Я не могу подключиться к OR, или, по крайней мере, мне это не удалось :). Может быть, что-то вроде этого?
CASE ProductLine
WHEN 'R' OR 'M' OR ... THEN 'Road'
ELSE 'Not for sale'
END
Ответ №1:
Измените на «искомое» выражение РЕГИСТРА. У вас есть «простое» выражение случая выше
CASE
WHEN ProductLine IN ('R', 'M', ...) THEN 'Road'
ELSE 'Not for sale'
END
Из ссылки MSDN выше:
Simple CASE expression:
CASE input_expression
WHEN when_expression THEN result_expression [ ...n ]
[ ELSE else_result_expression ]
END
Searched CASE expression:
CASE
WHEN Boolean_expression THEN result_expression [ ...n ]
[ ELSE else_result_expression ]
END
Комментарии:
1. Приятно! Кстати, почему выражение OR не является логическим выражением, это такой случай
2. @sll: SQL Server не поддерживает логическое выражение