提示忽略where子句

时间:2013-12-17 21:30:43

标签: tsql ssrs-2008 data-warehouse

在SQL中我需要发送四个提示:其中一个提示值为'none'。如果不是,我希望它返回所有结果。基本上没有人说没有where子句。但是如何?

Select ID_PK
From STG_TBL_DIM
WHERE GL_FK in (Select Value from dbo.split(@Prompt,','))

2 个答案:

答案 0 :(得分:1)

如果我正确理解你的@Prompt变量中的'none',那么这应该可行。

WHERE (
GL_FK in (Select Value from dbo.split(@Prompt,',')) 
or 
'none' in (Select Value from dbo.split(@Prompt,','))
)

我不会将拆分两次放入#temp表,然后放入子查询。

Select 
    Value
into #Values 
from dbo.split(@Prompt,',')


...    
the rest of your query
...

WHERE (
GL_FK in (Select Value from #Values) 
or 
'none' in (Select Value from #Values)
)

答案 1 :(得分:0)

where charindex('none',@Prompt) > 0
   or GL_FK in (Select Value from dbo.split(@Prompt,',')) 

我认为这解决了它。

当然,可能没有一个是其他词的子串,即。 nonewrecords ...所以它真的取决于细节,即Promt对1个值和1个值的格式, 如果它是一个分开的列表然后执行此操作

where charindex(',none,',','+@Prompt+',') > 0
   or GL_FK in (Select Value from dbo.split(@Prompt,',')) 

是一个简单的解决方案