Как сделать нулевое безопасное условие? - PullRequest
1 голос
/ 10 апреля 2019

Вот логика:

. . . WHERE hh.deleted = 0 OR hh.deleted IS NULL . . .

Я хочу сделать его более аккуратным и коротким, поэтому вот новая версия:

. . . WHERE hh.deleted <=> 0 . . .

Но результат не тот же. Есть идеи, почему? а чем отличается?

1 Ответ

2 голосов
/ 10 апреля 2019

Это не одна и та же логика. Рассмотрим следующее

deleted   deleted = 0 OR deleted IS NULL   deleted <=> 0
0         1                                1
1         0                                0
NULL      1                                0

Причина в том, что <=> просто возвращает 0, если один операнд равен NULL (вместо NULL, который deleted = 0 вернул бы, если deleted был NULL), тогда как deleted IS NULL вернет 1 в этой ситуации.

Демонстрация по dbfiddle

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