我有一个 smallint 字段,其中有一些记录在该字段中有空值。因此,当我在选择中使用 % 时,只会显示该字段中的任何值的记录。
我想问有没有其他通配符可以用来显示所有记录,包括那些有空值的记录?或者我必须使用 or is null ?
谢谢
NULL 没有值,也无法与其他值进行比较,这就解释了您的查询失败的原因。如果你也想获取 NULL 值,你必须添加OR your_field IS NULL
到你的 WHERE 子句中,正如你已经指出的那样。
注意
有时,NULL 可能会让人感到困惑,尤其是对于刚开始使用数据库的人来说。记住 NULL 行为方式的一个好方法是认为它的值是“我不知道的东西”。然后,当您编写查询时,您会发现针对 NULL 的比较失败是有道理的。
例如,“NULL 是否大于零?” 可能会令人困惑。但是,如果您将问题视为“我不知道的东西是否大于零?”,它会立即变得有意义:答案是“我不知道”(这就是不返回该行的原因)。:)
您可以使用 COALESCE 函数将 NULL 替换为一些预定义的值。例如:
SELECT
*
FROM
my_table
WHERE
COALESCE(my_field, -1) = some_value