如果在查询语句中找不到,则将变量设置为 NULL

war*_*990 1 sql sql-server sql-server-2008

我有以下代码

DECLARE @a INT

SET @a = 1

SELECT TOP 1
    @a = id
FROM
    test
WHERE
    name = 'notexist'

SELECT @a
Run Code Online (Sandbox Code Playgroud)

如果语句没有找到任何行,变量@a仍然有值,如果语句没有找到任何行,是否可以在不添加before语句的情况下将变量设置为 null ?1SELECT@aSELECTSET @a = NULLSELECT

Pரத*_*ீப் 6

尝试这个

SELECT TOP 1
    @a = id
FROM
    test
WHERE
    name = 'notexist'

If @@rowcount = 0
set @a = NULL
Run Code Online (Sandbox Code Playgroud)

或者

set @a = case when @@rowcount = 0 then null else @a end
Run Code Online (Sandbox Code Playgroud)

但最好避免 的初始化1。默认情况下它将是NULL