SQLServer —— 变量的使用
一、局部变量的定义与赋值
定义语法:
-- 声明一个局部变量
DECLARE @变量名 数据类型 -- 声明多个局部变量
DECLARE @变量名1 数据类型1, @变量名2 数据类型2
赋值语法:
SET @变量名 = 值 或 SELECT @变量名 = 值
使用 Select 赋值确保筛选出的记录只有1条。
实际的使用例子:
比如我现在有一张学生表,内容如下。

我现在有个需求,查出马小李的前面一位同学和马小李后面的一位同学,这个需求就需要使用局部变量:
-- 定义2个变量,一个保存学号,一个保存姓名
declare @stuId int, @stuName varchar(20)
-- 给姓名变量赋值
set @stuName = '马小李'
-- 查出马小李的学号并保存在学号变量中
select @stuId = StudentId from Students where StudentName = @stuName
-- 查出马小李前后的学生信息
select * from Students where StudentId = (@stuId - 1) or StudentId = (@stuId + 1)
查询结果如下:

二、SET 和 SELECT 比较
| 使用场景 | set | select |
| 同时对多个变量赋值 | 不支持 | 支持 |
| 表达式返回多个值时 | 出错 | 将返回的最后一个值赋给变量 |
| 表达式未返回值时 | 变量被赋NULL值 | 变量保持原值 |
比如,根据上面的学员表,如下的使用方式有差异:
declare @stuAddress varchar(500), @stuName varchar(20)
-- set @stuAddress = '天津市南开区红磡公寓5-5-102', @stuName = '马小李' -- 不允许这样赋值
select @stuAddress = '天津市南开区红磡公寓5-5-102', @stuName = '马小李' -- 允许
-- set @stuAddress = (select StudentAddress from Students) -- 不允许
select @stuAddress = StudentAddress from Students -- 允许
set @stuAddress = (select StudentAddress from Students where 1 < 0) -- NULL值
select @stuAddress = StudentAddress from Students where 1 < 0 -- 保持原值
三、全局变量
全局变量都使用俩个@标志作为前缀。

全部变量的使用:

SQLServer —— 变量的使用的更多相关文章
- sqlserver 变量
变量:分为全局变量和局部变量全部变量:以@@声明,为系统变量,所有实例都能访问,用户只能访问,不能赋值局部变量:生命周期只在一个批处理内有效, 局部变量经常使用的三种用途:1 在循环语句中记录循环的次 ...
- SqlServer变量
MySql变量 => https://www.cnblogs.com/fanqisoft/p/10700669.html 全局变量 局部变量 ⒈全局变量 以@@开头,后面跟相应的字符串,全局变量 ...
- sqlserver变量的生周期
在声明一个变量后,一旦遇到分号或者go,生命周期就结 DECLARE @num1 int --go ; --go print @num1; --print @num1:
- SQlServer 变量定义 赋值
declare @id int declare @name char(10) ;注意:char(10)为10位,要是位数小了会让数据出错 set @id=1 select @id=1 select @ ...
- SQLSERVER存储过程语法详解
CREATE PROC [ EDURE ] procedure_name [ ; number ] [ { @parameter data_type } [ VARYING ] [ = default ...
- SQL 使用触发器常见错误
今天做代码审查时,看见以下一段触发器的创建脚本,我们一起来分析一下 create trigger [trigger_puClassRoomType] on [dbo].[puClassRoomType ...
- 6 小时 Python 入门
6 小时 Python 入门 以下操作均在 Windows 环境下进行操作,先说明一下哈 一.安装 Python 1.官网下载 Python 进入官网(https://www.python.org), ...
- sqlserver 视图能否有变量
不能,sqlserver 视图一般不能有变量,也不能带存储过程
- sqlserver中表变量和变量表之间区别
sqlserver中表变量和变量表之间区别
随机推荐
- centos 重新编译php
说明:系统原来通过源码安装了php7.1.0.网上找了很多彻底删除原来php的办法,执行命令php -v PHP版本信息始终都在,说明方法都无用.自己大胆做了如下尝试,成功重新编译php 查找php ...
- sde中的shp数据无法编辑
最近整理空间数据库时,用sde比较多,发现在编辑sde中的数据时总是出现数据被锁或者是被其他应用程序占用.用了很多方法处理,但不是每个方法都实用.下面讲的是我在删除shp或者给shp增加字段时所遇到的 ...
- jeecms框架单点登录功能的实现
单点登录的功能实现主要原理: 1: 在点击登录按钮的时候使用reponse.addCookie()方法向浏览器发送cookie: 2: 在前段拦截器中的request.getCookie()在接收到设 ...
- Java虚拟机系列(二)---HotSpot虚拟机对象
都知道Java是一门面向对象的编程语言,在Java程序运行过程中,无时无刻不在创建对象,所以这节来总结一下HotSpot虚拟机中的Java对象. 一.Java虚拟机对象的创建过程. 在语义层面创建一个 ...
- python学习笔记3_数据载入、存储及文件格式
一.丛mysql数据库中读取数据 import pandas as pdimport pymysqlconn = pymysql.connect( host = '***', user = '***' ...
- pixhawk 常见问题 持续更新
红灯蓝灯闪,初始化中,请稍等 黄灯双闪,错误,系统拒绝解锁 黄灯闪,遥控器关闭 黄灯快速闪且滴滴响,电池保护激活 蓝灯... 未见过.... 绿灯闪: 已加锁,GPS锁定已获得. 准备解锁. 从加锁状 ...
- Matlab中的cell、size函数
参考网址:http://blog.sina.com.cn/s/blog_5efed5800100exmj.html Cell函数 如果p为一个数,那么h(1)=p,是没有问题的. 如果p为一个向量,那 ...
- String--在内存中的表现
创建字符串的方法有两种: Stringstr1=”直接赋值法” Stringstr2=new String(“通过new关键字的方法来创建”); 在执行String str1=” ...
- Bootstrap常见的类
一.标题 h1,h2,h3,h4,h5,h6
- XML之基础和DTD解析
本笔记可根据W3school教程学习: 首先-----了解XML文档结构.语法规范.作用 -----了解DTD约束的作用.具体约束语法 <?xml version="1.0" ...