Firebird SQL:带有空值的通配符%

时间:2012-08-07 14:06:53

标签: sql firebird

我有一个smallint字段,其中一些记录在该字段中具有空值。因此,当我在选择中使用%时,只显示该字段中的任何值。

我想问一下,我可以使用其他任何外卡字符来显示所有记录,包括那些有空值的记录吗?或者我必须使用或是否为空?

由于

2 个答案:

答案 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