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

 

三、全局變量

全局變量都使用倆個@標志作為前綴。

 

 全部變量的使用:

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM