在SQL中我需要发送四个提示:其中一个提示值为'none'。如果不是,我希望它返回所有结果。基本上没有人说没有where子句。但是如何?
Select ID_PK
From STG_TBL_DIM
WHERE GL_FK in (Select Value from dbo.split(@Prompt,','))
答案 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,','))
是一个简单的解决方案