1

在 SQLite中,IS是一个二元运算符,其行为=与操作数中的一个或两个时完全相同NULL。在两个操作数都是 的情况下,运算NULL符的IS计算结果为TRUE。如果一个操作数是NULL,而另一个不是,则该IS操作数的计算结果为FALSE

我在 PostgreSQL 中寻找类似的运算符,但我找不到。ISPostgreSQL中是否有相当于 SQLite 的运算符?如果不是,最好/最简单的解决方法是什么?

澄清SELECT column1 IS column2 ...一下,在 SQLite 中是允许的,但 PostgreSQL 会引发语法错误。

4

3 回答 3

3

尝试使用IS (NOT) DISTINCT FROM运算符。

于 2011-08-22T16:40:39.793 回答
2

显然它在 postgresql 中是可能的(参见 dan04's)。下面的查询可以在 SQL Server 和其他没有该语法的 DBMS 中工作。

您可以通过执行以下操作进行模拟:

WHERE (column1 is NULL and column2 is NULL) 
      OR column1 = column2
于 2011-08-22T16:41:00.197 回答
1

要添加到@Derek 的答案:

在 MySQL 中,您可以使用<=>运算符达到相同的效果:

SELECT * FROM table1 WHERE column1 <=> column2
于 2011-08-22T17:08:06.560 回答