我正在测试varchar字段是否为空或空。使用[field] <>''
执行测试似乎工作得很好,包括值是NULL
。
但是,是否存在可能无法按预期工作的情况,例如不同的排序规则或ANSI NULL设置?
使用[field] IS NOT NULL AND [field]<>''
会更安全吗?
答案 0 :(得分:5)
这里根本不需要进行不等式检查(请记住&lt;&gt;是nonSARGable)。由于您希望行非NOT NULL而不是空字符串,因此您可以简化此操作并使谓词具有SARGable。
[field] > ''
答案 1 :(得分:0)
使用官方语法&#39; IS NULL&#39;会更安全。或者不是空的&#39;
答案 2 :(得分:0)
您可以查看以下脚本:
ISNULL([field], '') <> ''
答案 3 :(得分:0)
对于varchar字段,检查
[field] IS NOT NULL AND [field]<>''
可以像这样做得更短
ISNULL([field], '') <> ''
他们做同样的事情
但正如Pred在他的评论中提到的,它可能会对性能产生负面影响,所以肖恩的答案更好