T-SQL的变量的使用与数据类型转换

变量的使用

局部变量

  1. 必须以标记@作为前缀,如@age

  2. 局部变量的使用先声明(使用关键字declare),再赋值

    DECLARE @age INT   --声明局部变量@age
    --SET @age=20      --赋值局部变量
    SELECT @age=20
    SELECT @age        --查看局部变量的值
    

    ​ 使用SELECT赋值确保筛选出的记录只有一条

全局变量

  1. 必须以标记@@作为前缀,如@@version
  2. 由系统定义和维护,只能读取,不能修改全局变量值

变量的使用

问题:编写T-SQL查询小明及其学号相邻的学员

DECLARE @StuId INT --声明学号变量,这个变量记录小明的学号
SELECT @StuId=ID FROM Student WHERE Name='小明'--根据学生姓名查询出改学生的学号
SELECT * FROM Student WHERE ID=(@StuId+1) OR ID=(@StuId-1)--根据这个学号查询相邻的学员信息

SET与SELECT区别

使用场景 SET SELECT
同时对多个变量赋值 不支持 支持
表达式返回多个值时 出错 将返回的最后一个值赋给变量
表达式未返回值时 变量被赋予NULL值 变量保持原值
DECLARE @age INT,@name VARCHAR(20)
--SET @age=20,@name='张三'--不允许这样做
SELECT @age=20,@name='张三'
SELECT @name
--SET @name=(SELECT Name FROM Student)
SELECT @name=Name FROM Student
--SET @name=(SELECT NAME FROM Student WHERE ID=0)
SELECT @name=NAME FROM Student WHERE ID=0
SELECT @name

全局变量的使用

变量 含义
@@ERROR 最后一个T-SQL错误的错误号
@@IDENTITY 最后一次插入的标识值
@@LANGUAGE 当前使用的语言的名称
@@MAX_CONNECTIONS 可以创建的同时连接的最大数目
@@ROWCOUNT 受上一个SQL语句影响的行数
@@SERVERNAME 本地服务器的名称
@@TRANSCOUNT 当前连接打开的事务数
@@VERSION SQL Server的版本信息

数据类型转换

数据类型转换

  1. 使用Convert函数实现强制转换

    CONVERT(数据类型,表达式,样式)--第三个参数可以省略。它一般用于日期类型数据转换为字符类型,
    
    PRINT '平均年龄是:'+CONVERT(VARCHAR(20),@avgAge)
    
  2. 使用CAST函数进行转换

    CASR(表达式 AS 数据类型)
    
    PRINT '平均年龄是:'+CAST(@avgAge AS VARCHAR(20))
    
发布了120 篇原创文章 · 获赞 239 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/chonbi/article/details/104802535