在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

SQL SERVER中SELECT和SET赋值有什么区别

118次阅读
没有评论

共计 1967 个字符,预计需要花费 5 分钟才能阅读完成。

这篇文章主要介绍了 SQL SERVER 中 SELECT 和 SET 赋值有什么区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让丸趣 TV 小编带着大家一起了解一下。

SELECT 和 SET 在 SQL SERVER 中都可以用来对变量进行赋值,但其用法和效果在一些细节上有些不同。

1. 在对变量赋值方面,SET 是 ANSI 标准的赋值方式,SELECT 则不是。这也是 SET 方式被推荐使用的原因之一。

2. SELECT 可以一次对多个变量进行赋值,而 SET 一次只能对一个变量赋值。

DECLARE @NAME NVARCHAR(128), @AGE INT;
SET @NAME = N 小明 
SET @AGE=18;
PRINT @NAME;
PRINT @AGE;
DECLARE @NAME NVARCHAR(128), @AGE INT;
SELECT @NAME = N 小明 ,@AGE=18;
PRINT @NAME;
PRINT @AGE;

3. 当使用子查询给变量赋值时,则要求子查询必须是标量子查询(即子查询得到结果是一个数据或者一行一列),不能返回多个值,否则会报错。

1)但要注意的是,如果在 SELECT 查询语句中给变量赋值的时候,查询语句返回记录的多少都不会产生错误,变量所得的值是查询语句最后一行的记录的相应值。

2)如果查询结果没有返回记录,也就是说返回为 NULL 值时,将整个子查询进行赋值的方式,SET 和 SELECT 都会设置为 NULL,而在 SELECT 查询语句中赋值,变量会保持为初始值不受影响。

IF (OBJECT_ID( tempdb..#temp) is not null)
BEGIN
 DROP TABLE #temp;
BEGIN
 CREATE TABLE #temp( [Name] NVARCHAR(128) ,
 AGE INT
 )
INSERT INTO #temp([Name],AGE) VALUES(N 小明 ,18)
INSERT INTO #temp([Name],AGE) VALUES(N 小张 ,19)
INSERT INTO #temp([Name],AGE) VALUES(N 小王 ,17)
DECLARE @NAME1 NVARCHAR(128), @AGE1 INT,@NAME2 NVARCHAR(128), @AGE2 INT;
SET @NAME1=(SELECT TOP 1 [NAME] FROM #temp); --SET 标量在查询赋值
SELECT @AGE1=(SELECT TOP 1 AGE FROM #temp); --SELECT 标量在查询赋值
SELECT @NAME2=[NAME],@AGE2=[AGE] FROM #temp; --SELECT 查询语句中赋值
PRINT @NAME1; -- 正确运行, 显示结果:小明
PRINT @AGE1; -- 正确运行, 显示结果:18
PRINT @NAME2; -- 正确运行, 显示结果:小王
PRINT @AGE2; -- 正确运行, 显示结果:17
DECLARE @NAME1 NVARCHAR(128), @AGE1 INT,@NAME2 NVARCHAR(128), @AGE2 INT;
SELECT @NAME1=N 初始名字 ,@AGE1=0,@NAME2=N 初始名字 ,@AGE2=0; -- 初始化各变量值
SET @NAME1=(SELECT TOP 1 [NAME] FROM #temp WHERE 1  --SET 标量在查询赋值
SELECT @AGE1=(SELECT TOP 1 AGE FROM #temp WHERE 1  --SELECT 标量在查询赋值
SELECT @NAME2=[NAME],@AGE2=[AGE] FROM #temp WHERE 1  --SELECT 查询语句中赋值
PRINT @NAME1; -- 正确运行, 实际值:NULL,  显示结果:(空白)PRINT @AGE1; -- 正确运行, 实际值:NULL,  显示结果:(空白)PRINT @NAME2; -- 正确运行, 实际和显示值:初始名字
PRINT @AGE2; -- 正确运行, 实际和显示值:0
GO

  那么我们该如何选择使用哪种方式:

1. 因 SET 作为 ANSI 的标准,因此其是推荐用法。

2. 在不考虑标准的情况下,如果涉及到对多个变量赋值,为了少写代码或者获取多个全局变量的值时,请考虑使用 SELECT,一是因为简便,二是一些全局变量会在在第二句执行时值发生变化。

感谢你能够认真阅读完这篇文章,希望丸趣 TV 小编分享的“SQL SERVER 中 SELECT 和 SET 赋值有什么区别”这篇文章对大家有帮助,同时也希望大家多多支持丸趣 TV,关注丸趣 TV 行业资讯频道,更多相关知识等着你来学习!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-01发表,共计1967字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 久久精品高清 | 成人动漫综合网 | 人妻阿敏被老外玩弄系列 | 国产成人悠悠影院 | 亚洲精品久久久久午夜福 | 天堂一区二区三区在线观看 | 十八岁污网站在线观看 | 精品香蕉一区二区三区 | 夜夜添无码一区二区三区 | 最近中文字幕视频在线资源 | 爱情岛论坛网亚洲品质 | 国产suv精品一区二区 | 天堂а√在线中文在线新版 | 亚洲另类激情专区小说图片 | 亚洲一区二区三区在线 | 91免费在线看 | 国产成人综合一区精品 | 亚洲国产精品久久久久久久 | 毛片视频免费网站 | 欧美在线视频一区二区三区 | 日韩毛片在线看 | 免费大黄网站在线看 | 清纯美女校花在线啪视频播放器 | 丁香六月婷婷综合激情动漫 | 人妻熟女久久久久久久 | 国产午夜精品一区二区三区软件 | 欧美日韩国产一区二区 | 欧美成人午夜视频在线观看 | 国产国产人免费人成免费视频 | 免费精品一区二区三区在线观看 | 久久中文字幕人妻熟av女蜜柚m | 成年男女的免费视频网站 | 久久亚洲欧美成人精品 | 无码国产69精品久久久久孕妇 | 欧洲精品色 | 国产精品入口免费视频 | 免费做爰猛烈吃奶摸视频在线观看 | 日韩人妻无码一区二区三区久久 | 国产人妻aⅴ色偷 | 草草草在线 | 亚洲av永久纯肉无码精品动漫 |