In SQLite,IS
是一个二进制运算符,其行为与=
完全相同,除非其中一个或两个操作数都是NULL
。如果两个操作数均为NULL
,则IS
运算符的计算结果为TRUE
。如果一个操作数是NULL
而不是另一个,IS
操作数的计算结果为FALSE
。
我在PostgreSQL中寻找类似的操作符,但我找不到。在PostgreSQL中是否有相当于SQLite的IS
运算符?如果没有,那么最好/最不复杂的解决办法是什么?
为了澄清,SQLite中允许SELECT column1 IS column2 ...
,但PostgreSQL会引发语法错误。
答案 0 :(得分:3)
尝试使用IS (NOT) DISTINCT FROM运算符。
答案 1 :(得分:2)
显然可以在postgresql中使用(参见dan04的)。下面的查询可以在SQL Server和其他语法不可用的DBMS中使用。
您可以通过以下方式进行模拟:
WHERE (column1 is NULL and column2 is NULL)
OR column1 = column2
答案 2 :(得分:1)
添加到@ Derek的答案:
在MySQL中,您可以使用<=>
运算符产生相同的效果:
SELECT * FROM table1 WHERE column1 <=> column2