Почему сравнение не работает в CONVERT?

Можно ли использовать оператор сравнения в функциях 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
6
задан WileCau 6 January 2012 в 02:36
поделиться