Установите Undefined для значений BIT - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть столбец isWantedBack для сотрудника с BIT в качестве типа данных. Если это 1, если сотрудник уходит, он может быть повторно принят на работу. Если это 0, это наоборот. Поскольку я пытаюсь очистить данные, я хочу присвоить -1 записям, имеющим isWantedBack как NULL

Когда я пытаюсь это сделать:

SELECT ISNULL(EC.isWantedBack,-1) AS isWantedBack ...

, я получаю 1 вместо -1 как результат

1 Ответ

2 голосов
/ 12 февраля 2020

ISNULL(check_expression, replacement_value) возвращает того же типа, что и check_expression , который в вашем случае равен BIT, и именно поэтому вы получаете 1 вместо -1. Вместо этого, если вы хотите, чтобы результат был целым числом в операторе SELECT, используйте COALESCE(expression \[ ,...n \]), который возвращает тип данных выражения с наивысшим приоритетом типа данных и с BIT имеет более низкий приоритет , чем у любого целочисленного типа данных, в результате вы получите -1:

SELECT COALESCE(EC.isWantedBack,-1) AS isWantedBack

Вы также можете достичь того же с выражением CASE:

SELECT CASE WHEN EC.isWantedBack IS NULL THEN -1 ELSE isWantedBack END AS isWantedBack

См. Упрощенную демонстрацию .

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