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

分类:编程技术 时间:2024-02-20 15:32 浏览:0 评论:0
0
本文主要介绍SQL SERVER中SELECT和SET赋值的区别。有一定的参考价值。有兴趣的朋友可以参考一下。希望您读完这篇文章后能有所收获。让小编带你一起去看看吧。学习关于。

SELECT和SET都可以用来给SQL SERVER中的变量赋值,但是它们的用法和效果在一些细节上有些不同。

1.在给变量赋值方面,SET是ANSI标准的赋值方法,而SELECT则不是。这也是推荐SET方法的原因之一。

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

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

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

1)但需要注意的是,在SELECT查询语句中给变量赋值时,无论查询语句返回多少条记录,都不会出现错误。该变量获取的值是查询语句最后一行的记录。相应的值。

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

IF (OBJECT_ID('tempdb..#temp') 不为空)BEGIN DROP TABLE #temp;ENDELSEBEGINCREATE TABLE #temp( [Name] NVARCHAR(128) , AGE INT )ENDGOINSERT INTO #temp([姓名],AGE) VALUES(N'小明',18)INSERT INTO #temp([姓名],AGE) VALUES(N '小张',19)INSERT INTO #temp([姓名],AGE) VALUES(N'小王',17)GODECLARE @NAME1 NVARCHAR(128), @AGE1 INT,@NAME2 NVARCHAR(128), @AGE2 INT ;SET @NAME1=(SELECT TOP 1 [姓名] 来自 #temp); --SET 标量在查询中分配 SELECT @AGE1=(SELECT TOP 1 AGE FROM #temp); --SELECT 标量在查询中分配 SELECT @NAME2=[ NAME],@AGE2=[AGE] FROM #temp; --在SELECT查询语句@NAME1中指定PRINT; --正确运行并显示结果:Xiao Ming PRINT @AGE1; --正确运行并显示结果:18PRINT @NAME2; - - 运行正确并显示结果:Xiao Wang PRINT @AGE2; -- 正确运行并显示结果: 17GODECLARE @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>1); --SET 标量被分配给 in 查询 SELECT @AGE1=(SELECT TOP 1 AGE FROM #temp WHERE 1>1); --SELECT 标量在查询中分配 SELECT @NAME2=[NAME],@AGE2=[AGE ] FROM #temp WHERE 1>1; --在SELECT查询语句中赋值PRINT @NAME1; --正确运行,实际值:NULL,显示结果:(空白) PRINT @AGE1; --正确运行,实际值:NULL,显示结果:(空白) PRINT @NAME2; --正确运行,实际值和显示值:初始名称PRINT @AGE2; --正确运行,实际和显示值:0GO

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

1.由于 SET 是 ANSI 标准,因此推荐使用它。

2.无论标准如何,如果涉及到为多个变量赋值、编写较少的代码或获取多个全局变量的值,请考虑使用 SELECT。首先,它很简单。其次,当第二句执行时,一些全局变量的值会发生变化。

感谢您仔细阅读本文。我跳希望小编分享的这篇文章《SQL SERVER中SELECT和SET赋值有什么区别》对大家有帮助。也希望大家支持我,关注行业信息频道。更多相关知识等待您学习!

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > SQL SERVER 中的 SELECT 和 SET 赋值有什么区别?

用户评论