【问题标题】:Is there a PostgreSQL equivalent of SQLite's IS operator?是否有与 SQLite 的 IS 运算符等效的 PostgreSQL?
【发布时间】:2011-08-22 16:38:31
【问题描述】:

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

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

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

【问题讨论】:

    标签: sql postgresql sqlite comparison-operators


    【解决方案1】:

    试试IS (NOT) DISTINCT FROM 运算符。

    【讨论】:

      【解决方案2】:

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

      您可以通过以下方式进行模拟:

      WHERE (column1 is NULL and column2 is NULL) 
            OR column1 = column2
      

      【讨论】:

        【解决方案3】:

        要添加到@Derek 的答案:

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

        SELECT * FROM table1 WHERE column1 <=> column2
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-06-07
          • 1970-01-01
          • 2012-02-08
          • 2010-12-25
          • 2011-10-30
          • 2011-03-20
          • 2018-12-29
          相关资源
          最近更新 更多