sql server select和set赋值的区别
--SQL Server中对已经定义的变量赋值的方式用两种,分别是 SET 和 SELECT
--当表达式返回一个值并对一个变量进行赋值时,推荐使用 SET 方法
(1)SELECT可以在一条语句里对多个变量同时赋值,而SET只能一次对一个变量赋值
select @para_1 = '1',@para_2 = '2';
而set要达到同样的效果,需要:
set @para_1 = '1'
set @para_2 = '2'
(2)表达式返回多个值时,用SET将会出错,而SELECT将取最后一个值
假设:table_1表有多个sex记录
select @para_1 = sex from table_1 --将取最后一个值
set @para_1 = sex from table_1 --将报错
(3)表达式无返回值时,用SET将置变量值为NULL,用SELECT变量将保持原值
假设:table_1表为空
set @para_1 = '初始值'
select @para_1 = sex from table_1 --此时@para_1为‘初始值’
set @para_1 = sex from table_1 --此时@para_1为null
(4)使用标量子查询时,如果无返回值,SET和SELECT一样,都将置为NULL
假设:table_1表为空
set @para_1 = '初始值'
select @para_1 = (select sex from table_1) --此时@para_1为null
set @para_1 = (select sex from table_1) --此时@para_1为null
sql server select和set赋值的区别的更多相关文章
- SQL Server 表变量和临时表的区别
SQL Server 表变量和临时表的区别 一.表变量 表变量在SQL Server 2000中首次被引入.表变量的具体定义包括列定义,列名,数据类型和约束.而在表变量中可以使用的约束包括主键约束,唯 ...
- SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别
SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别 MSSQL为我们提供了两种动态执行SQL语句的命令,分别是 EXEC 和 SP_EXECUTESQL ,我们先来看一下两种方 ...
- SQL Server中SCAN 和SEEK的区别
SQL Server中SCAN 和SEEK的区别 SQL SERVER使用扫描(scan)和查找(seek)这两种算法从数据表和索引中读取数据.这两种算法构成了查询的基础,几乎无处不在.Scan会扫描 ...
- [转]SQL SERVER中openrowset与opendatasource的区别
本文转自:http://blog.sina.com.cn/s/blog_6399df820102vyy8.html SQL SERVER中openrowset与opendatasource的区别: o ...
- SQL Server SELECT逻辑处理顺序
SQL Server SELECT语句,逻辑处理顺序,虽然SELECT位于语句最前面,它在逻辑处理中,基本上是最后一个被执行的部分. 下面列出查询子句在逻辑上处理顺序: 1. FROM 2. WH ...
- SQL SERVER 中的smalldatetime和datetime区别
原文:SQL SERVER 中的smalldatetime和datetime区别 smalldatetime不能到秒. 不過它占的空間小.(4位) datetime(8位) 而且兩者的時間範圍不一樣. ...
- SQL Server中存储过程与函数的区别
本质上没区别.只是函数有如:只能返回一个变量的限制.而存储过程可以返回多个.而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行.执行的本质都一样. 函数限制比较多,比如不能用临 ...
- 简析一下SQL Server里面Fast_Forword 和 SRROLL 的区别
这次简单说说游标的分类. 先看看通常游标的语法 DECLARE cursor_name CURSOR [ LOCAL :局部游标,仅在当前会话有效 | GLOBAL : 全局游标,全局有效,可以 ] ...
- [转]SQL Server 表变量和临时表的区别
一.表变量 表变量在SQL Server 2000中首次被引入.表变量的具体定义包括列定义,列名,数据类型和约束.而在表变量中可以使用的约束包括主键约束,唯一约束,NULL约束和CHECK约束(外键约 ...
随机推荐
- C++入门经典-例8.2-构造函数的访问顺序
1:父类和子类中都有构造函数和析构函数,那么子类对象在创建时是父类先进行构造还是子类先进行构造?同样,在子类对象释放时,是父类先进行释放,还是子类先进行释放?这都是有先后顺序的.答案是当从父类派生一个 ...
- Java多线程-程序运行堆栈分析
class文件内容 class文件包含JAVA程序执行的字节码:数据严格按照格式紧凑排列在class文件中的二进制流,中间无任何分隔符:文件开头有一个0xcafebabe(16进制)特殊的一个标志. ...
- SRS之信号的管理:SrsSignalManager
1. 综述 SRS 中使用了 State Threads 协程库,该库对信号的处理是将信号事件转换为 I/O 事件.主要做法是:对关注的信号设置同样地信号处理函数 sig_catcher(),该函数捕 ...
- Python编程中NotImplementedError的使用
Python编程中raise可以实现报出错误的功能,而报错的条件可以由程序员自己去定制.在面向对象编程中,可以先预留一个方法接口不实现,在其子类中实现.如果要求其子类一定要实现,不实现的时候会导致问题 ...
- koa 基础(二十一)nodejs 操作mongodb数据库 --- 查询数据
1.app.js /** * nodejs 操作mongodb数据库 * 1.安装 操作mongodb * cnpm install mongodb --save * 2.引入 mongodb 下面的 ...
- ModuleNotFoundError: No module named '_sqlite3'的解决办法:pipenv的用法
export PIPENV_VENV_IN_PROJECT=1pipenv --venvpipenv --where pipenv install -r requirements.txtpipenv ...
- LC 660. Remove 9 【lock, hard】
Start from integer 1, remove any integer that contains 9 such as 9, 19, 29... So now, you will have ...
- 学习 C++ 读什么书
C++ 看什么书? 很多莘莘学子,想要在这条路上前进,却是踽踽独行,摸不到门路.就像我当初是一样的.在没有一个前辈带路的情况下,想要自己一个人摸索前进,那份迷茫,深深的刻进自己的记忆里. 下面 ...
- 使用gimp画线、矩形、圆等
使用gimp画线.矩形.圆等 https://blog.csdn.net/tody_guo/article/details/7628508 2012年06月03日 19:08:47 Tody Guo ...
- spring boot系列(四)spring boot 配置spring data jpa (保存修改删除方法)
spring boot 使用jpa在pom.xml在上文中已经介绍过.在这里直接介绍各个类文件如何编写: 代码结构: domain(存放实体类文件): repository(存放数据库操作文件,相当于 ...