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

时间:2015-08-19 04:08:28

标签: sql sql-server sql-server-2008

我有以下代码

DECLARE @a INT

SET @a = 1

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

SELECT @a
如果@a语句找不到任何行,

变量1仍然会有SELECT值,是否可以将@a变量设置为null SELECT语句在SET @a = NULL语句之前未添加SELECT的情况下找不到任何行?

2 个答案:

答案 0 :(得分:4)

以这种方式分配价值

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

SELECT @a

答案 1 :(得分:1)

试试这个

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

If @@rowcount = 0
set @a = NULL

set @a = case when @@rowcount = 0 then null else @a end

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