Есть ли в PostgreSQL эквивалент оператора IS SQLite? - PullRequest
1 голос
/ 22 августа 2011

В SQLite , IS - это двоичный оператор, который ведет себя точно так же, как =, за исключением случаев, когда один или оба операнда имеют значение NULL. В случае, когда оба операнда имеют значение NULL, оператор IS оценивается как TRUE. В случае, когда один операнд равен NULL, но не другой, операнд IS оценивается как FALSE.

Я искал аналогичный оператор в PostgreSQL, но не смог его найти. Есть ли в PostgreSQL эквивалент оператора SQLite IS? Если нет, то какой лучший / наименее сложный обходной путь?

Для пояснения, SELECT column1 IS column2 ... разрешен в SQLite, но PostgreSQL вызывает синтаксическую ошибку.

Ответы [ 3 ]

3 голосов
/ 22 августа 2011

Попробуйте оператор IS (NOT) DISTINCT FROM .

2 голосов
/ 22 августа 2011

По-видимому, это возможно в postgresql (см. Dan04). Приведенный ниже запрос будет работать в SQL Server и других СУБД, где этот синтаксис недоступен.

Вы можете симулировать, выполнив:

WHERE (column1 is NULL and column2 is NULL) 
      OR column1 = column2
1 голос
/ 22 августа 2011

Чтобы добавить к ответу @ Дерека:

В MySQL вы можете использовать оператор <=> для того же эффекта:

SELECT * FROM table1 WHERE column1 <=> column2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...