我想将一个T-SQL存储过程传递给两个整数值,这些值将用于确定我将在WHERE子句中使用哪些列。该表包含4列,分别为Q1,Q2,Q3和Q4。
如果我为第一个整数传入1而第二个整数传入3,我希望WHERE使用Q1和Q3。我不知道该怎么做。
答案 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)