每天我都会学到新东西,似乎:)有人可以向我解释以下代码行为背后的基本原理:
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
Run Code Online (Sandbox Code Playgroud)
根据我的看法,如果结果集为NULL,则SET会更改变量的值,而SELECT则不会.这是正常的ANSI行为还是特定于T-SQL?
当然,如果我这样做SELECT @A = NULL,分配正确.