我需要有工作作为这样一个条件where子句:
Select *
From Table
If (@booleanResult)
Begin
Where Column1 = 'value1'
End
Else
Begin
Where column1 = 'value1' and column2 = 'value2'
End
任何帮助,将不胜感激。
我需要有工作作为这样一个条件where子句:
Select *
From Table
If (@booleanResult)
Begin
Where Column1 = 'value1'
End
Else
Begin
Where column1 = 'value1' and column2 = 'value2'
End
任何帮助,将不胜感激。
你可以只执行以下操作?
SELECT
*
FROM
Table
WHERE
(@booleanResult = 1
AND Column1 = 'value1')
OR
(@booleanResult = 0
AND Column1 = 'value1'
AND Column2 = 'value2')
您可以将条件很容易地在WHERE
子句:
WHERE
(@BooleanResult=1 AND Column1 = 'value1')
OR
(@BooleanResult=0 AND Column1 = 'value1' AND column2 = 'value2')
基于有问题的剧本,看来你需要的条件Column1
不论变量是否@booleanResult
设置为true或false。 所以,我补充说,条件到WHERE
子句,并在其余条件检查变量是否设置为1( 真 ),或者如果它被设置为0( 假 ),那么它也将检查的条件Column2
。
这是实现这一点的只是多一个途径。
CREATE TABLE MyTable
(
Column1 VARCHAR(20) NOT NULL
, Column2 VARCHAR(20) NOT NULL
);
INSERT INTO MyTable (Column1, Column2) VALUES
('value1', ''),
('', 'value2'),
('value1', 'value2');
DECLARE @booleanResult BIT
SET @booleanResult = 1
SELECT *
FROM MyTable
WHERE Column1 = 'value1'
AND ( @booleanResult = 1
OR (@booleanResult = 0 AND Column2 = 'value2')
);
输出 :
COLUMN1 COLUMN2
------- -------
value1
value1 value2
DECLARE @booleanResult BIT
SET @booleanResult = 0
SELECT *
FROM MyTable
WHERE Column1 = 'value1'
AND ( @booleanResult = 1
OR (@booleanResult = 0 AND Column2 = 'value2')
);
输出 :
COLUMN1 COLUMN2
------- -------
value1 value2
点击此处查看SQL小提琴演示。
为了提供更短的答案:
Select *
From Table
Where Column1 = 'value1' and
coalesce(column2, '') = (case when @BooleanResults = 0
then 'value1'
else coalesce( column2, '')
end)