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    -- 保持原值

    三、全局变量

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

     全部变量的使用:

  • 相关阅读:
    Go语言:如何解决读取不到相对路径配置文件问题
    Go组件学习:如何读取ini配置文件
    PMP学习笔记(一)
    SpringBoot安装与配置
    Homebrew中国镜像安装与配置
    Nginx日志常见时间变量解析
    openresty如何完美替换nginx
    Golang防止多个进程重复执行
    Windows 10 中CPU虚拟化已开启,但是docker无法运行
    彻底理解Python多线程中的setDaemon与join【配有GIF示意】
  • 原文地址:https://www.cnblogs.com/xulinjun/p/12020189.html
Copyright © 2011-2022 走看看