似乎每天我都会学到一些新东西:)有人可以向我解释以下代码行为背后的基本原理:
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
了,那么分配就会正确进行。