如何使用POSTGRES LTREE选择空路径



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

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

如果我在表中插入以下值,

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

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

SELECT * FROM films WHERE path=NULL;

我得到空行:

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

我应该如何修改查询以返回路径为空的行?谢谢

至少有一个操作数为NULL的比较运算的结果总是返回NULL。因此,谓词where path = null总是返回null,但要选择一行,表达式必须返回True。改为使用:

SELECT * FROM films WHERE path is NULL;

最新更新