这两种判断NULL的方法有什么区别
What is the difference in these two methods of determining NULL
我有一些 T-SQL 代码可以检查以确定字段是否为 NULL。通常我只是在字段上做一个 IS NULL 检查,但是在我得到的这段代码中,使用的方法是
WHERE ISNULL(MyField, '') <> ''
这是更容易接受的方法吗?它比简单地说 WHERE MyField IS NOT NULL
好还是坏
为你的帮助干杯
它同时考虑了空字段和空字符串字段。在某些情况下,这只是一个空字段所需要的。
表达式:
WHERE MyField IS NOT NULL
将允许优化器在适当的情况下使用索引(即使可用,也可能不是最佳解决方案)。字段上的函数通常会阻止使用索引。
表达式:
ISNULL(MyField, '') <> ''
或
COALESCE(MyField, '') <> ''
不仅把''
和NULL
混淆了。但是,如果该字段是数字类型,则 ''
将被解释为 0
,从而造成进一步的混淆。
我有一些 T-SQL 代码可以检查以确定字段是否为 NULL。通常我只是在字段上做一个 IS NULL 检查,但是在我得到的这段代码中,使用的方法是
WHERE ISNULL(MyField, '') <> ''
这是更容易接受的方法吗?它比简单地说 WHERE MyField IS NOT NULL
为你的帮助干杯
它同时考虑了空字段和空字符串字段。在某些情况下,这只是一个空字段所需要的。
表达式:
WHERE MyField IS NOT NULL
将允许优化器在适当的情况下使用索引(即使可用,也可能不是最佳解决方案)。字段上的函数通常会阻止使用索引。
表达式:
ISNULL(MyField, '') <> ''
或
COALESCE(MyField, '') <> ''
不仅把''
和NULL
混淆了。但是,如果该字段是数字类型,则 ''
将被解释为 0
,从而造成进一步的混淆。