您的位置:首页 > 数据库

关于使用select语句对变量赋值的注意事项

2016-01-26 11:15 471 查看
DECLARE @a TABLE (
id INT

)

INSERT INTO @a

SELECT 1

UNION

SELECT 2

UNION

SELECT 3

DECLARE @tt INT=0

SELECT
@tt=CASE WHEN id=1 THEN
1
ELSE
0
END

FROM @a

WHERE id=4

PRINT @tt

赋值时,要考虑以下可能场景:

1、select查询有结果

变量值为select查询返回结果

2、select查询无结果

变量值不会改变,即变量原始值是什么,就是什么,这一点是和set赋值有区别的。

如:上面的查询,@tt的值为0,而不会是null;

但是如果用set,则结果将会是null,即赋值一定会被执行,如下面脚本:

DECLARE @a TABLE (

id INT

)

INSERT INTO @a

SELECT 1

UNION

SELECT 2

UNION

SELECT 3

DECLARE @tt INT=0

--SELECT

-- @tt=CASE WHEN id=1 THEN

-- 1

-- ELSE

-- 0

-- END

--FROM @a

--WHERE id=4

SET @tt=

(SELECT

CASE WHEN id=1 THEN

1

ELSE

0

END

FROM @a

WHERE id=4)

PRINT @tt

这个@tt的值将会变成null
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SQL Server select 脚本