这个查询的输出是什么?

时间:2015-07-24 17:48:58

标签: sql-server

declare @a int
declare @b int
set @a=5
set @b=11

select @a=@a^@b,@b=@b^@a,@a=@a^@b

print '@a='+convert(varchar, @a)
print '@b='+convert(varchar,@b)

请让我详细解释一下。

1 个答案:

答案 0 :(得分:1)

^bitwise exclusive or运算符。

我现在没有正常运行的SQLServer设置,而SQLFiddle似乎对于执行此查询有些模糊不清,但是,如果我们从左到右解释查询:

@a=@a^@b=5^11=14
@b=@b^@a=11^14=5
@a=@a^@b=14^5=11

简而言之,这是一个用于在不使用第三个变量的情况下切换两个整数值的技巧。