如何在 PostgreSQL 表中选择属性不为 NULL 的位置?

Kin*_*han 3 postgresql null isnull

我有这个PostgreSQL表,测试一下:

 a | b | c | d 
---+---+---+---
 5 |   | 5 | 7
 5 | 6 |   |  
 1 | 2 | 3 |  
Run Code Online (Sandbox Code Playgroud)

我想查询所有b值不为NULL的元组:

SELECT * FROM test WHERE b != NULL;
SELECT * FROM test WHERE b <> NULL;
Run Code Online (Sandbox Code Playgroud)

这两个命令都没有返回记录:

 a | b | c | d 
---+---+---+---
(0 rows)
Run Code Online (Sandbox Code Playgroud)

我应该使用什么命令来选择所有具有 ab 值的元组?

Kin*_*han 5

IS NOT NULL

使用这个命令:

SELECT * FROM test WHERE b IS NOT NULL;
Run Code Online (Sandbox Code Playgroud)

结果是:

 a | b | c | d 
---+---+---+---
 5 | 6 |   |  
 1 | 2 | 3 |  
(2 rows)
Run Code Online (Sandbox Code Playgroud)

标准SQL

两个谓词IS NULL&IS NOT NULL都是标准 SQL(维基百科)。因此它们可以在 Postgres 以及其他兼容的数据库中工作。