我測試如果varchar字段不爲空或空。使用[field] <>''
執行測試似乎工作正常,包括值爲NULL
。這個空比較總是會產生相同的結果嗎?
但有沒有情況下,這可能無法按預期工作,例如不同的排序規則或ANSI NULL設置?
我會更安全地使用[field] IS NOT NULL AND [field]<>''
?
我測試如果varchar字段不爲空或空。使用[field] <>''
執行測試似乎工作正常,包括值爲NULL
。這個空比較總是會產生相同的結果嗎?
但有沒有情況下,這可能無法按預期工作,例如不同的排序規則或ANSI NULL設置?
我會更安全地使用[field] IS NOT NULL AND [field]<>''
?
真的是沒有必要的不平等點擊這裏根本(記住,<>是nonSARGable)。既然你想要的行不是空的,而不是空的字符串,你可以簡化這一點,使你的謂詞SARGable。
[field] > ''
+1這。根據定義,[field]必須是非空字符串。這個答案也將使用索引,並會提供更好的性能超過任何在這裏發佈的其他答案。 –
非常好!我接受這個答案是因爲它簡潔明瞭,總會產生理想的結果,並且你教會了我一個新的詞彙,我將嘗試在日常的談話中使用它! – userSteve
有關SARGability的更多詳細信息... https://en.wikipedia.org/wiki/Sargable當然,還有許多其他更深入的資源。 –
這將是更安全的使用官方語法 'IS NULL' 或 'IS NOT NULL'
您可以檢查以下腳本:
ISNULL([field], '') <> ''
是的,這或ISNULL([場], '')<>' – Tyron78
ISNULL(場, '')<>' – GuidoG
它總是好的做法,使您的查詢/應用/不管安全距離每個「髒數據」的例子。 –