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