我創建具有參數的過程和基於參數我必須把在where子句例如不同的過濾器子句是記錄:取在不同情況下
@para1
as
Select a,b,c from z
where @para1 = 0 then a = a
and @para1 = 1 then a between 1 to 10
and @para1 = 2 then a between 11 and 20
我創建具有參數的過程和基於參數我必須把在where子句例如不同的過濾器子句是記錄:取在不同情況下
@para1
as
Select a,b,c from z
where @para1 = 0 then a = a
and @para1 = 1 then a between 1 to 10
and @para1 = 2 then a between 11 and 20
你可以做圍繞這些方針的東西。下面像CASE
Select a,b,c
from z
where (@para1 = 0 AND A = A) -- A=A condition is pointless though
OR (@para1 = 1 AND a between 1 and 10)
OR (@para1 = 2 AND a between 11 and 20)
的AND
OR
作品組合使用AND/OR
邏輯
SELECT a,b,c
FROM z
WHERE @para1 = 0 -- to pull all records when @para1 = 0
OR (@para1 = 1
AND a BETWEEN 1 AND 10) -- To pull records BETWEEN 1 AND 10 when @para1 = 1
OR (@para1 = 2
AND a BETWEEN 11 AND 20) -- To pull records BETWEEN 11 AND 20 when @para1 = 2
試試這個mehtod:
DECLARE @Cond AS NVARCHAR(1000)
if @para1 = 0
SET @Cond = ' a = a'
else if @para1 = 1
SET @Cond = ' a between 1 and 10'
else if @para1 = 2
SET @Cond = ' a between 11 and 20'
EXEC('Select a,b,c from z where ' + @Cond)
你可以試試這個
if(@para1=0)
Begin
----
End
if(@para1=1)
Begin
----
End
或者如果你有多個條件,那麼
select * from <tableName> where 1=1 AND (@para1=1 || ----)
AND (@para1=2 || ----)
嗨,你可以用參數測試,然後像這樣的和運營商開始。
@para1 as
Select a,b,c
from z
where (@para1 = 0) or (@para1 = 1 and a >= 1 and a <= 10) or (@para1 = 2 and a >= 11 and a <= 20);
注意到a = a將始終返回true,除非將a設置爲null。
祝你好運。
標記您正在使用的dbms。該代碼遠離ANSI SQL兼容。 – jarlh