我可以使用哪些策略来动态选择要过滤的列?

时间:2014-06-18 21:26:54

标签: sql sql-server

我想将一个T-SQL存储过程传递给两个整数值,这些值将用于确定我将在WHERE子句中使用哪些列。该表包含4列,分别为Q1,Q2,Q3和Q4。

如果我为第一个整数传入1而第二个整数传入3,我希望WHERE使用Q1和Q3。我不知道该怎么做。

1 个答案:

答案 0 :(得分:2)

将索引作为列表发送,然后将其作为动态SQL字符串。

select <columnlist>
from <table>
where (1 in @indices and column1 = @value)
  OR (2 in @indices and column2 = @value)
  OR (3 in @indices and column3 = @value)
  OR (4 in @indices and column4 = @value)

使用该模式的东西,它与你的(未完全指定的)逻辑匹配。

或者使用这两个参数,如果你确定只有两个参数,那么你可以选择这样的条件......

select <columnlist>
from <table>
where ((1 = @index1 OR 1 = @index2) and column1 = @value)
  OR ((2 = @index1 OR 2 = @index2) and column2 = @value)
  OR ((3 = @index1 OR 3 = @index2) and column3 = @value)
  OR ((4 = @index1 OR 4 = @index2) and column4 = @value)