2016-02-10 31 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'%'))