我需要使用if condition
在子查询中选择行declare @VersionNo varchar(30)
Set @VersionNo = 'Hello'
选择(案例@VersionNo' Hello'然后(选择' 22',' 22')else(选择' 25', ' 22')结束)
但我收到此错误
Msg 156,Level 15,State 1,Line 4
关键字' IF'附近的语法不正确。Msg 156,Level 15,State 1,Line 4
附近的语法不正确
关键字'然后'。Msg 156,Level 15,State 1,Line 5
关键字' Else'附近的语法不正确。Msg 102,Level 15,State 1,Line 5
')'附近的语法不正确。
有人可以帮我解决这个问题吗?
从答案中,我改变了我的查询,如
declare @VersionNo varchar(30)
Set @VersionNo = 'Hello'
select (case @VersionNo when 'Hello' then (Select '22','22') else (Select '25','22') end)
现在我收到此错误
Msg 116,Level 16,State 1,Line 4
当未使用EXISTS引入子查询时,只能在选择列表中指定一个表达式。
答案 0 :(得分:2)
您需要使用CASE
,不能在选择查询中使用IF
select case @VersionNo when 'Hello'
then 'Yes'
else 'No'
end
或者,您可以根据变量的值运行不同的选择查询:
IF @VersionNo = 'Hello'
SELECT 'Yes'
ELSE
SELECT 'No'
答案 1 :(得分:2)
使用CASE WHEN
:
declare @VersionNo varchar(30);
Set @VersionNo = 'Hello';
Select CASE WHEN @VersionNo='Hello' Then 'Yes' Else 'No' END AS SomeCol;
答案 2 :(得分:1)
检查一下:
DECLARE @VersionNo VARCHAR(30)
SET @VersionNo = 'Hello'
SELECT CASE @VersionNo
WHEN 'Hello' THEN '22'
ELSE '25'
END ,
CASE @VersionNo
WHEN 'Hello' THEN '22'
ELSE '22'
END