jco*_*and 6 t-sql sql-server isnull
我希望在我的查询中防止不可搜索的表达式,这是检查空条件的更好方法吗?
AND c.Account IS NOT NULL
AND c.Account <> ''
Run Code Online (Sandbox Code Playgroud)
要么
AND ISNULL(c.Account,'') <> ''
Run Code Online (Sandbox Code Playgroud)
我突然意识到Account它来自一个LEFT JOIN所以它可能是空的.我想要他们只相交的情况,这意味着我真的应该用一个INNER JOIN吧?谢谢你的facepalms;)
然而,忽视了肉麻的自我实现,我还是想知道在一般情况下,我不能让这个问题的答案AccountNOT NULL列.
C.Account <> ''相当于ISNULL( c.Account, '' ) <> ''
SQL Server 可能足够聪明,可以将 IsNull 转换为等效的 SARG 表达式,但如果您一心想使用函数,那么 Coalesce 是更好的选择,因为它是 SQL 标准的一部分,允许多个值(而不是 IsNull 时仅两个值) )并避免使用 Microsoft 在 IsNull 中设计的可能最令人困惑的函数名称。