Можно ли использовать оператор сравнения в функциях CONVERT или CAST?
У меня есть инструкция, которая выглядит следующим образом:
SELECT
...
CASE field
WHEN 'Y' THEN 1 # If Y then True
ELSE 0 # Anything else is False
END
...
FROM ...
Аналогичная вещь происходит с несколькими полями, поэтому я хотел бы изменить ее на более короткую версию:
SELECT
...
CONVERT(BIT, field = 'Y')
...
FROM ...
Но MSSQL выдает ошибку Неверно синтаксис рядом с '='.
Моя интерпретация справки такова, что она должна работать:
CONVERT (тип_данных [(длина)], выражение [, стиль])
выражение: выражение {двоичный_оператор} выражение
двоичный_оператор
: Оператор, определяющий способ объединения двух выражений для получения единого результата. binary_operator может быть арифметическим оператором, оператором присваивания (=), побитовым оператором, оператором сравнения, логическим оператором, оператором конкатенации строк (+) или унарным оператором. оператор сравнения: (= |> | <|> = | <= | <> |! = |! <|!>)
Я провел несколько тестов и получил следующие результаты:
SELECT CONVERT(BIT, 0) // 0
SELECT CONVERT(BIT, 1) // 1
SELECT CONVERT(BIT, 1+2) // 1
SELECT CONVERT(BIT, 1=2) // Error
SELECT CONVERT(BIT, (1=2)) // Error
SELECT CONVERT(BIT, (1)=(2)) // Error