如何 select 使用 POSTGRES LTREE 清空路径

How to select empty paths with POSTGRES LTREE

我在 Postgres 中定义了一个简单的 table,我在其中使用 LTREE,但有些行可以有空路径:

CREATE TABLE films (
    id     serial PRIMARY KEY,
    title  varchar(40) NOT NULL,
    path   ltree DEFAULT NULL 
);

如果我将以下值插入 table,

INSERT INTO films (title, path)
VALUES ('first', 'A'),('second', 'A.B'),('third', NULL);

然后尝试 select 具有空路径的行,

SELECT * FROM films WHERE path=NULL;

我得到空行:

 id | title | path 
----+-------+------
(0 rows)

我应该如何将查询修改为具有空路径的 return 行?谢谢!

与至少一个操作数的比较运算结果总是NULL returns NULL。因此,您的谓词 where path = null 始终 return 为 null,但是到 select 的一行表达式必须 return 为真。改用:

SELECT * FROM films WHERE path is NULL;