Использование операторов сравнения в предложении SELECT запроса T-SQL - PullRequest
41 голосов
/ 25 февраля 2010

Как выбрать результат сравнения в качестве поля типа BIT?

Как это работает в C#:

bool isGreater = FieldA > FieldB;

Как это не работает в T-SQL:

SELECT (FieldA > FieldB) AS BIT FROM t

Как правильно написать такую ​​задачу?

Ответы [ 2 ]

57 голосов
/ 25 февраля 2010

Вы должны использовать предложение CASE:

CASE
    WHEN FieldA > FieldB THEN 1
    ELSE 0
END AS [BIT]
41 голосов
/ 25 февраля 2010
Select Convert(Bit, Case When FieldA > FieldB Then 1 Else 0 End) As YourBitColumn

Если вы хотите вернуть BIT, вам нужно преобразовать (или привести) в битовый тип данных, иначе SQL интерпретирует жестко закодированную константу (1 или 0) как целое число.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...