2016-02-10 30 views
-1

尋找使用此條件接受NULL和BLANK值的最有效方法。SQL like子句(空值和空值)

and region.Description like isnull(@Region, N'') + N'%' 

該查詢適用於NULLS,但是對於EMTPY值它不起作用。任何想法來調整這兩個執行?

+0

SQL Server 2008中 –

+0

嘗試ISNULL(NULLIF(@region, ''),N) – prats1411

回答

0

我不完全確定你正在嘗試做什麼,或者你正在使用哪個數據庫。但根據這些問題的答案,我猜測COALESCE可能比ISNULL更適合你。

+0

感謝。 SQL Server 2008.如果COALESCE是更好的選擇 - 希望瞭解如何將它分解到查詢中。我是否簡單地更換ISNULL –

+0

您可以,但經過反思,我認爲在這種情況下,COALESCE將提供相同的結果。它可能是空白或空白的是什麼? Region.Description還是@Region? –

0

就我個人而言,我發現明確地檢查NULL,而不是用COALESCE()或ISNULL()做任何聰明的技巧。然後通過在修剪任何空格之後檢查字符串的長度來包含空格。

(region.Description LIKE @Region + '%' OR @Region IS NULL OR LEN(LTRIM(RTRIM(@Region)))=0) 
+0

這工作完美。當我將參數值從一個SSRS報告傳遞給另一個時,此代碼將幫助我將空白值作爲「值」傳遞,而不是null,這會拋出鑽取。謝謝 –

0
AND( (isnull(@Region, N'')='' AND isnull(region.Description,'')='') 
OR(isnull(@Region, N'')<>'' AND region.Description like @Region + N'%'))