zoukankan      html  css  js  c++  java
  • 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    -- 保持原值

    三、全局变量

    全局变量都使用俩个@标志作为前缀。

     全部变量的使用:

  • 相关阅读:
    #2019090700004
    51nod 1191-贪心+并查集
    hdu 5015-矩阵快速幂
    树形DP—依赖背包模板
    HDU 1074—压缩DP
    动态绑定的开销
    动态绑定
    静态绑定(前期绑定)
    继承的一些优点
    多态置换原则初始化基类对象
  • 原文地址:https://www.cnblogs.com/xulinjun/p/12020189.html
Copyright © 2011-2022 走看看