是否有PostgreSQL相当于SQLite的IS运算符?

时间:2011-08-22 16:38:32

标签: sql postgresql sqlite comparison-operators

In SQLiteIS是一个二进制运算符,其行为与=完全相同,除非其中一个或两个操作数都是NULL。如果两个操作数均为NULL,则IS运算符的计算结果为TRUE。如果一个操作数是NULL而不是另一个,IS操作数的计算结果为FALSE

我在PostgreSQL中寻找类似的操作符,但我找不到。在PostgreSQL中是否有相当于SQLite的IS运算符?如果没有,那么最好/最不复杂的解决办法是什么?

为了澄清,SQLite中允许SELECT column1 IS column2 ...,但PostgreSQL会引发语法错误。

3 个答案:

答案 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