Skip to main content

SQLite为空

SQLite的介绍是NULL运算符

空是特别的。它表示一条信息未知或不适用。

例如,有些歌曲可能没有词曲作者信息,因为我们不知道是谁写的。

为了将这些未知的词曲作者和歌曲一起存储在数据库表中,我们必须使用NULL。

NULL不等于任何东西,甚至数字零、空字符串等等。

特别是,NULL并不等于它本身。以下表达式返回0:

NULL = NULL

这是因为两个未知信息无法进行比较。

让我们从示例数据库中查看以下轨迹表:

以下语句尝试查找其作曲家为NULL的曲目:

SELECT
Name,
Composer
FROM
tracks
WHERE
Composer = NULL;

它返回一个空行,不发出任何附加消息。

这是因为以下表达式的计算结果始终为false:

Composer = NULL

这样使用空值是无效的。

要检查值是否为NULL,请改用is NULL运算符:

{ column | expression } IS NULL;

如果列或表达式的计算结果为NULL,则IS NULL运算符返回1。

要查找作曲家未知的所有曲目,请使用IS NULL运算符,如以下查询所示:

SELECT
Name,
Composer
FROM
tracks
WHERE
Composer IS NULL
ORDER BY
Name;

以下是部分输出:

SQLite IS NULL example

SQLite不是空运算符

NOT运算符对IS NULL运算符求反,如下所示:

expression | column IS NOT NULL

如果表达式或列不为NULL,IS NOT NULL运算符返回1,如果表达式或列为NULL,则返回0。

下面的示例查找作曲家不为NULL的曲目:

SELECT
Name,
Composer
FROM
tracks
WHERE
Composer IS NOT NULL
ORDER BY
Name;

此图显示了部分输出:

在本教程中,您学习了如何使用is NULL和is not NULL运算符检查列或表达式中的值是否为NULL。