Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 的用法 » 查询和修改数据 » 查询数据 » WHERE 子句:指定行

 

基于 NULL 对列进行测试

您可以使用 IS NULL 搜索条件将列值与 NULL 进行比较,并根据比较结果选择列值或执行特定的操作。只有返回值 TRUE 的列才被选中或引发指定的操作;那些返回 FALSE 或 UNKNOWN 的列不会被选中,也不引发指定的操作。

以下示例仅选择 UnitPrice 小于 $15 或者为 NULL 的行:

SELECT Quantity, UnitPrice
   FROM Products
   WHERE UnitPrice < 15
   OR UnitPrice IS NULL;

任何值与 NULL 的比较结果都是 UNKNOWN,这是因为不能确定 NULL 是等于(或不等于)给定的值还是等于(或不等于)另一个 NULL。

有些条件从不返回 TRUE,因此使用这些条件的查询不会返回结果集。例如,永远无法确定以下比较为 TRUE,这是因为 NULL 表示具有未知值:

WHERE column1 > NULL

此逻辑还适用于在 WHERE 子句中使用两个列名(即连接两个表)的情况。包含条件 WHERE column1 = column2 的子句不返回列中包含 NULL 的行。

您还可以使用这些模式查找 NULL 或非 NULL:

WHERE column_name IS NULL
WHERE column_name IS NOT NULL

例如:

WHERE advance < $5000
OR advance IS NULL

请参见NULL 值