如何使用逗号分隔的值列表作为T-SQL中的过滤器?

Mik*_*e B 6 sql t-sql sql-server

我有一个基本的SQL查询,从以下开始:

SELECT top 20 application_id, [name], location_id FROM apps
Run Code Online (Sandbox Code Playgroud)

现在,我想完成它,以便它这样做(用伪代码编写)

if @lid > 0 then
    WHERE location_id IN (@lid)
else
    WHERE location_id is all values in location_id column
Run Code Online (Sandbox Code Playgroud)

根据要求,这是一个例子

application_id             name               location_id
----------------------------------------------------------
1                          Joe Blogs          33
2                          Sam Smith          234
3                          Jeremy Carr        33
Run Code Online (Sandbox Code Playgroud)

@locid是用户给出的结果,例如'33,234'

如果@lid为空,那么我希望它输出具有name和application_id的location_id的所有行.否则,我希望它输出与@lid中提供的数字相关的所有行(代表location_id.

所以,如果@lid是0:

application_id             name               location_id
----------------------------------------------------------
1                          Joe Blogs          33
2                          Sam Smith          234
3                          Jeremy Carr        33
Run Code Online (Sandbox Code Playgroud)

否则,如果@lid包含'33'

application_id             name               location_id
----------------------------------------------------------
1                          Joe Blogs          33
3                          Jeremy Carr        33
Run Code Online (Sandbox Code Playgroud)

Arn*_*shn 3

尝试使用Case,它用于 IIF 或三元运算符的目的。请检查此链接http://msdn.microsoft.com/en-us/library/ms181765.aspx

干杯