这两种判断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,从而造成进一步的混淆。