Yat*_*rix 21 sql sql-server-2005 where-clause
我需要有一个条件where子句,其操作如下:
Select *
From Table
If (@booleanResult)
Begin
Where Column1 = 'value1'
End
Else
Begin
Where column1 = 'value1' and column2 = 'value2'
End
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.
dia*_*aho 36
你能做到以下几点吗?
SELECT
*
FROM
Table
WHERE
(@booleanResult = 1
AND Column1 = 'value1')
OR
(@booleanResult = 0
AND Column1 = 'value1'
AND Column2 = 'value2')
Run Code Online (Sandbox Code Playgroud)
JNK*_*JNK 13
您可以在WHERE子句中轻松地对条件进行分组:
WHERE
(@BooleanResult=1 AND Column1 = 'value1')
OR
(@BooleanResult=0 AND Column1 = 'value1' AND column2 = 'value2')
Run Code Online (Sandbox Code Playgroud)
小智 5
根据所讨论的脚本Column1,无论变量@booleanResult设置为 true 还是 false ,您似乎都需要条件。因此,我已将该条件添加到WHERE子句中,并在其余条件中检查变量是设置为1 ( true ) 还是设置为0 ( false ) 然后它还将检查条件 on Column2。
这只是实现这一目标的另一种方式。
CREATE TABLE MyTable
(
Column1 VARCHAR(20) NOT NULL
, Column2 VARCHAR(20) NOT NULL
);
INSERT INTO MyTable (Column1, Column2) VALUES
('value1', ''),
('', 'value2'),
('value1', 'value2');
Run Code Online (Sandbox Code Playgroud)
DECLARE @booleanResult BIT
SET @booleanResult = 1
SELECT *
FROM MyTable
WHERE Column1 = 'value1'
AND ( @booleanResult = 1
OR (@booleanResult = 0 AND Column2 = 'value2')
);
Run Code Online (Sandbox Code Playgroud)
输出:
COLUMN1 COLUMN2
------- -------
value1
value1 value2
Run Code Online (Sandbox Code Playgroud)
DECLARE @booleanResult BIT
SET @booleanResult = 0
SELECT *
FROM MyTable
WHERE Column1 = 'value1'
AND ( @booleanResult = 1
OR (@booleanResult = 0 AND Column2 = 'value2')
);
Run Code Online (Sandbox Code Playgroud)
输出:
COLUMN1 COLUMN2
------- -------
value1 value2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41192 次 |
| 最近记录: |