2017-09-20 85 views
1

我測試如果varchar字段不爲空或空。使用[field] <>''執行測試似乎工作正常,包括值爲NULL這個空比較總是會產生相同的結果嗎?

但有沒有情況下,這可能無法按預期工作,例如不同的排序規則或ANSI NULL設置?

我會更安全地使用[field] IS NOT NULL AND [field]<>''

+0

是的,這或ISNULL([場], '')<>' – Tyron78

+0

ISNULL(場, '')<>' – GuidoG

+0

它總是好的做法,使您的查詢/應用/不管安全距離每個「髒數據」的例子。 –

回答

5

真的是沒有必要的不平等點擊這裏根本(記住,<>是nonSARGable)。既然你想要的行不是空的,而不是空的字符串,你可以簡化這一點,使你的謂詞SARGable。

[field] > '' 
+1

+1這。根據定義,[field]必須是非空字符串。這個答案也將使用索引,並會提供更好的性能超過任何在這裏發佈的其他答案。 –

+0

非常好!我接受這個答案是因爲它簡潔明瞭,總會產生理想的結果,並且你教會了我一個新的詞彙,我將嘗試在日常的談話中使用它! – userSteve

+0

有關SARGability的更多詳細信息... https://en.wikipedia.org/wiki/Sargable當然,還有許多其他更深入的資源。 –

0

這將是更安全的使用官方語法 'IS NULL' 或 'IS NOT NULL'

0

您可以檢查以下腳本:

ISNULL([field], '') <> ''

0

爲varchar字段校驗

[field] IS NOT NULL AND [field]<>'' 

可以這樣

做短

他們這樣做完全一樣的東西

但由於強的鬆在他的評論中提到的,它可能會對性能產生負面影響,因此肖恩的答案是更好

+0

可以使用較短的語法完成,但請檢查執行計劃,特別是如果您在該字段上有索引 – Pred

+0

@Pred我更新了我的答案以供您評論。 – GuidoG

相關問題