我有一个类似的查询:
SELECT *
FROM USERS
WHERE location1 = true
users表有4列:
location1
location2
location3
location4
在我的存储过程中,我想传入一个参数,告诉我使用location1或location2等。
有没有办法编写我的查询,这样我就可以处理这个问题,而不必为每个过滤器重新编写相同的查询4次?
我的SELECT查询有点复杂,但基本上它是相同的想法。
答案 0 :(得分:1)
使用Dynamic query
Declare @column varchar(128), -- Procedure input
@sql nvarchar(max)
set @sql = '
SELECT *
FROM USERS
WHERE '+quotename(@column)+' = true'
exec sp_executesql @sql
答案 1 :(得分:1)
您可以使用一些OR
来实现这一点(特别是如果您不想使用动态sql路由)。
SELECT *
FROM USERS
WHERE ((@myLocationParameter = 'location1' AND location1 = true)
OR (@myLocationParameter = 'location2' AND location2 = true)
OR ....)