【发布时间】:2012-09-09 10:07:45
【问题描述】:
似乎每天我都会学到一些新东西 :) 有人可以向我解释一下以下代码行为背后的基本原理吗:
DECLARE @A INT
SET @A = 15
SET @A = (SELECT ValueThatDoesntExist FROM dbo.MyTable WHERE MyColumn = 'notfound')
SELECT @A
-- Rsultset is NULL
SET @A = 15
SELECT @A = ValueThatDoesntExist FROM dbo.MyTable WHERE MyColumn = 'notfound'
SELECT @A
-- Resultset is 15
据我所知,如果结果集为 NULL,SET 会更改变量的值,而 SELECT 不会。这是正常的 ANSI 行为还是特定于 T-SQL?
当然,如果我执行SELECT @A = NULL,则分配正确。
【问题讨论】: