SQL Server 中对已经定义的变量赋值的方式有两种,分别是 SETSELECT

当表达式返回一个值并对一个变量进行赋值时,推荐使用 SET 方法

下表列出 SET 与 SELECT 的区别。请特别注意红色部分。

 

set select
同时对多个变量同时赋值 不支持 支持
表达式返回多个值时 出错 将返回的最后一个值赋给变量
表达式未返回值 变量被赋null值 变量保持原值     

 

 

 

 

 

 

 例如:

表达式返回多个值时,使用 SET赋值“报错”

表达式返回多个值时,使用 SELECT 赋值

declare @addr varchar(128)
select @addr = addr from chinadba1
print @addr --结果集中最后一个 addr 列的值
--结果: addr3
go

表达式未返回值时,使用 SET 赋值

declare @addr varchar(128)
set @addr = '初始值'
set @addr = (select addr from chinadba1 where userid = 4 )
print @addr --null值
go

表达式未返回值时,使用 SELECT 赋值

declare @addr varchar(128)
set @addr = '初始值'
select @addr = addr from chinadba1 where userid = 4
print @addr --保持原值
go

                                                                                                                     

posted on 2020-11-27 14:46  该吃药了  阅读(207)  评论(0编辑  收藏  举报