我正在尝试以下操作,正如预期的那样,我会得到两列值。
declare @aa varchar(10) = 'bb'
declare @bb varchar(10) = 'aa'
select @aa, @bb
然后我尝试了以下内容,但无法解释结果。我没有看到任何东西,除了命令执行成功。
declare @aa varchar(10) = 'bb'
declare @bb varchar(10) = 'aa'
select @aa = @bb
我在这做了什么?我期待一个真/假或一个/零或一个错误。
答案 0 :(得分:4)
select @aa = @bb
是SET @aa = @bb
使用IIF SELECT IIF(@aa = @bb, 'Same', 'Different')
<强> SqlFiddleDemo 强>
不平等SELECT IIF(@aa <> @bb, 'Different', 'Same')
在一般SELECT IIF((condition), 1, 0)
中,1为真,0为假。
答案 1 :(得分:2)
在查询中进行比较:
select
case
when @aa = @bb then 'MATCH'
else 'NOT MATCH'
end
你正在做的事情:
select @aa, @bb
以上选择存储在变量中的两个值作为单独的“列”。
select @aa = @bb
以上设置变量@aa
等于@bb
的值。
答案 2 :(得分:1)
您不是在比较变量,而是在分配变量。 =运算符将分配值。
您可以尝试这样:
declare @aa varchar(10) = 'bb'
declare @bb varchar(10) = 'aa'
if(@aa = @bb)
print 'Match'
else
print 'Not Match'
或更紧凑使用IIF
SELECT IIF(@aa = @bb, 'Match', 'Not Match')