这种空比较总会产生相同的结果吗?

use*_*eve 1 sql t-sql sql-server

我正在测试varchar字段是否为null或为空.使用执行测试[field] <>''似乎工作正常,包括值NULL.

但是,是否存在可能无法按预期工作的情况,例如不同的排序规则或ANSI NULL设置?

我会更安全使用[field] IS NOT NULL AND [field]<>''吗?

Sea*_*nge 5

这里根本不需要进行不等式检查(请记住<>是nonSARGable).由于您希望行为NOT NULL而不是空字符串,因此您可以简化此操作并使谓词成为SARGable.

[field] > ''
Run Code Online (Sandbox Code Playgroud)