SQL中select与set的区别-转载
下表列出 SET 与 SELECT 的区别
| SELECT | SET | |
| 同时对多个变量同时赋值时 | 支持 | 不支持 |
| 表达式返回多个值时 | 将返回的最后一个值赋给变量 | 出错 |
| 表达式未返回值时 | 变量保持原值 | 变量被赋null值 |
(1).同时对多个变量同时赋值时
declare @a varchar(128), @b varchar(128) SET @a='ABC',@b='EFG' GO --报错:消息 102,级别 15,状态 1,第 3 行 ',' 附近有语法错误。
declare @a varchar(128), @b varchar(128) SELECT @a='ABC',@b='EFG' GO --正确运行
(2).表达式返回多个值时
在说明这一项前我们先创建一个要用到的表,并对其赋值,代码如下:

create table fuzhiTEST(
id int ,
name varchar(128)
)
go
insert into fuzhiTEST(id,name) values(1,'name1')
insert into fuzhiTEST(id,name) values(2,'name2')
insert into fuzhiTEST(id,name) values(3,'name3')
go

declare @name varchar(128) set @name = (select name from fuzhiTEST) GO --报错:消息 512,级别 16,状态 1,第 2 行
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
declare @name varchar(128) select @name =name from fuzhiTEST print @name GO --正确运行:显示 name3
(3).表达式未返回值时
declare @name varchar(128) set @name = 'SET初始值' set @name = (select name from fuzhiTEST where id = 4 ) print @name GO --正确运行:显示NULL
declare @name varchar(128) set @name = 'SELECT初始值' select @name = name from fuzhiTEST where id = 4 print @name --正确运行:显示 SELECT初始值
注意:SELECT 也可以将标量子查询的值赋给变量,如果标量子查询不返回值,则变量被置为 null 值(此时与使用 SET 赋值是完全相同的)。 对标量子查询的概念大家可能觉得陌生,下面举个例子说明下(对比上面绿色部分):
declare @name varchar(128) set @name = 'SELECT初始值' select @name =(select name from fuzhiTEST where id = 4 ) print @name --正确运行:显示NULL
来源 http://www.cnblogs.com/4mylife/archive/2012/10/25/2738466.html
SQL中select与set的区别-转载的更多相关文章
- SQL中select与set的区别
转自 : http://www.cnblogs.com/4mylife/archive/2012/10/25/2738466.html 下表列出 SET 与 SELECT 的区别 SELECT S ...
- SQL中ON和WHERE的区别
SQL中ON和WHERE的区别 - 邃蓝星空 - 博客园 https://www.cnblogs.com/guanshan/articles/guan062.html
- SQL中SELECT INTO和INSERT INTO SELECT语句介绍
表复制是经常要用到的操作,下面就将为您介绍SQL中SELECT INTO和INSERT INTO SELECT语句,供您参考. Insert是T-sql中常用语句,Insert INTO table( ...
- Entity Framework中IQueryable, IEnumerable, IList的区别(转载)
原文:http://www.cnblogs.com/hiteddy/archive/2011/10/01/Difference_among_IQueryable_IEnumeralb_IList_in ...
- SQL中存储过程和函数的区别
转:https://www.cnblogs.com/jacketlin/p/7874009.html 本质上没区别.只是函数有如:只能返回一个变量的限制.而存储过程可以返回多个. 而函数是可以嵌入在s ...
- 面试问题 - SQL 中存储过程与函数的区别
SQL 中的存储过程与函数没有本质上的区别 函数 -> 只能返回一个变量. 函数可以嵌入到sql中使用, 可以在select 中调用, 而存储过程不行. 但函数也有着更多的限制,比如不能使用临 ...
- SQL中INEXISTS和IN 的区别和联系
SET NOCOUNT ON , SET NOCOUNT OFF当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数).当 SET NOCOUNT 为 ...
- PL/SQL中SELECT总结
一.SELECT 语句的各个关键词的顺序及作用简解(这个我简略点写~) 1.SELECT 2.FROM 3.WHERE 4.GROUP BY ---对结果集进行分组,通常与聚合函数一起使用 5.H ...
- 关于SQL中SELECT *(星号)的危害论
听闻有许多人是禁止开发人员在SQL中使用SELECT *的,这里翻译一下StackOverflow的一篇提问,个人认为相当客观 [SELECT *]危害主要有以下几点: 给数据消费者传数据的低效.当你 ...
随机推荐
- 2000条你应知的WPF小姿势 基础篇<28-33 WPF启动故事>
在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000Things You Should Know About C# 和 2,0 ...
- ASP.NET MVC 视图(一)
ASP.NET MVC 视图(一) 前言 从本篇开始就进入到了MVC中的视图部分,在前面的一些篇幅中或多或少的对视图和视图中的一些对象的运用进行了描述,不过毕竟不是视图篇幅说的不全面,本篇首先为大家讲 ...
- CSharpGL(19)用glReadPixels把渲染的内容保存为PNG图片(C#)
CSharpGL(19)用glReadPixels把渲染的内容保存为PNG图片(C#) 效果图 本文解决了将OpenGL渲染出来的内容保存到PNG图片的方法. 下载 CSharpGL已在GitHub开 ...
- Android点击列表后弹出输入框,所点击项自动滚动到输入框上方
使用微信的朋友圈会发现,点击某一条评论后输入框会弹出来,然后所点击的那一项会自动地滚动到输入框上方的位置,这样如果开始所点击的评论在屏幕很下方的话,就不会被输入框遮住,虽然微信这一点在我的MX2频繁点 ...
- Entity Framework 6 Recipes 2nd Edition(13-5)译 -> 使POCO的修改追踪更高
问题 你正在使用POCO,你想提高修改跟踪的性能,同时使内存消耗更少.另外,你想通过EF的CodeFirst方式来实现. 解决方案 假设你有一个关于Account(帐户)和相关的Payments(支付 ...
- WinForm中显示PDF文件
一.VS2013中,菜单-工具-选择工具箱项-COM组件-勾选“Adobe PDF Reader”-确定 二.在工具箱中就可以看到Adobe PDF Reader控件了,拖到窗体上. 拖到窗体上之后, ...
- 电容与EMC-电容不同功能时对整板EMC的作用
一般我们的pcb板的器件有很多种类,但是值得特别关注的,很多人都会说是BGA.接口.IC.晶振之类,因为这些都是layout功能模块以及设计难点.然而数量上占绝对优势的器件却是阻容器件,之前围殴阻抗时 ...
- PHP_VERSION_ID是如何定义的
PHP_VERSION_ID是一个整数,表示当前PHP的版本,从php5.2.7版本开始使用的,比如50207表示5.2.7.和PHP版本相关的宏定义在文件 phpsrcdir/main/php_ve ...
- 解决js动态改变dom元素属性后页面及时渲染问题
今天实现一个进度条加载过程,dom结构其实就是两个div <div class="pbar"> <div class="ui-widget-header ...
- CSS3伸缩盒Flexible Box
这是一种全新的布局,在移动端非常实用,IE对此布局的相关的兼容不是很好,Firefox.Chrome.Safrai等需要加浏览器前缀. 先说说这种布局的特点: 1)移动端由于屏幕宽度都不一样,在布局的 ...