给出以下示例:
declare @i int
select @i = 1, @i = 2
select @i
Run Code Online (Sandbox Code Playgroud)
将@i
永远是2?
这是我能想到的最简单的例子,但我正在考虑使用它来交换变量中的值.我也相信这种赋值方法(select)不符合ANSI标准(无论多么有用),但在这种情况下并不真正关心可移植代码.
UPDATE
感谢@MichaelFredrickson,我们有@ MartinSmith的回答,并参考了MSDN.我现在正在努力解决本文档中的第二句话的确切含义(强调添加):
如果单个SELECT语句中有多个赋值子句,则SQL Server不保证表达式的计算顺序.请注意,只有在分配中有引用时才会显示效果.
然而,第一句话足以让我远离依赖这种行为.
sql t-sql sql-server variable-assignment operator-precedence