我想完成以下内容 case when
If @chk='Y'
Select * From Table1 Where Column1=@Value
Else If (@chk='N')
Select * From Table1 Where Column1 In (Select column2 from Table2)
Run Code Online (Sandbox Code Playgroud)
我想它可能是这样的:
Select *
From Table1
Where
Case When @chk='Y' Then
Column1=@Value
Else
Column1 In (Select column2 from Table2)
End
Run Code Online (Sandbox Code Playgroud)
我知道除了之外还有其他解决方案Case When.但是可以使用Case when吗?
CASE是一个返回单个值的表达式.它不用于控制流量.
WHERE (Column1 = @Value AND @chk = 'Y')
OR (@chk <> 'Y' AND Column1 IN (SELECT column2 FROM table2));
Run Code Online (Sandbox Code Playgroud)
CASE用于表达式的内联求值。它并不真正适用于动态WHERE子句。
您所要求的解决方案是使用WHERE由括号分组的子句:
Select * From Table1
Where
(@chk='Y' AND Column1=@Value)
OR
(@chk <> 'Y' AND Column1 In (Select column2 from Table2))
Run Code Online (Sandbox Code Playgroud)