欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SQL?server數(shù)據(jù)庫declare和set用法技巧小結(jié)

 更新時間:2023年08月11日 10:00:58   作者:帝火流冰  
這篇文章主要給大家介紹了關(guān)于SQL?server數(shù)據(jù)庫declare和set用法技巧的相關(guān)資料,在SQL Server中,DECLARE用于聲明變量和存儲過程中的參數(shù),文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下

最近遇到一段不怎么看得懂的SQL語句,經(jīng)過查閱資料,整理出來的有關(guān)數(shù)據(jù)拼接、數(shù)據(jù)庫變量的一些內(nèi)容如下:

如根據(jù)下述學(xué)生表,若要求得到年齡最大的學(xué)生信息:

學(xué)號15001150021500316004
姓名張三李四王麗薇姿
性別
年齡20201922

不使用變量的情況下,可用嵌套查詢實現(xiàn):

Select * from 學(xué)生表 where 年齡=(select max(年齡) from 學(xué)生表)

運用變量解決上述問題:

????????Declare @bianliang?int;
????????Set @bianliang=(select max(年齡) from 學(xué)生表);
????????Select * from 學(xué)生表 where 年齡=@bianliang

面對實際工作中海量紛繁復(fù)雜的數(shù)據(jù),使用嵌套或連接查詢時很容易出現(xiàn)各種語句錯誤,此時可以通過引入變量的方式將數(shù)據(jù)之間的邏輯關(guān)系簡單化、清晰化。

SQL Server中變量的使用主要涉及三方面的內(nèi)容,即定義變量,為變量賦值以及結(jié)果的顯示。

一、定義/聲明變量

變量分為全局變量和局部變量,全局變量一般是系統(tǒng)內(nèi)置的,用戶使用時一般無法自行定義,實際工作中也只需要使用局部變量。定義變量的語句如下(定義多個變量時需用逗號隔開):

Declare @變量名1  數(shù)值類型,@變量名2  數(shù)值類型,@變量名3  數(shù)值類型,……

如:declare @i1  int,@i2  nvarchar(10),@i3  money,……

二、為變量賦值

可以使用set或select命令為變量賦值,可以直接將某個具體的值賦給變量,也可以將一個需要經(jīng)過運算產(chǎn)生的查詢結(jié)果賦給變量。

1.直接賦值

如聲明變量:declare @bl1 int,@bl2  nvarchar(10),@bl3  money;

分別使用set和select分別為上述3個變量賦值:

set @bl1=100;  set @bl2='hello' ;  set @bl3=3.1415926  ;          

Select @bl1=100, @bl2='hello',@bl3=3.1415926 ;

2.為變量賦一個需要運算產(chǎn)生結(jié)果的值

如聲明變量:Declare @bl int;

以前文的學(xué)生表為例,分別使用set和select將學(xué)生表中學(xué)生年齡的最大值賦給變量@bl:

Set @bl=(select max(年齡) from學(xué)生表);

Select @bl=max(年齡) from 學(xué)生表;

3.set與select為變量賦值時的區(qū)別

直接賦值時set與select并無區(qū)別,只有所賦的值是一個查詢結(jié)果時二者才有不同,當(dāng)查詢結(jié)果唯一時(如最大最小值),set和select都可以完成賦值,但是查詢結(jié)果不止一個時使用set會提示錯誤。

如查詢前文學(xué)生表中學(xué)生年齡:

Declare @bl?int;
Set @bl=(select 年齡 from 學(xué)生表);

則變量@bl的賦值無法完成,因為學(xué)生表中年齡不止一條記錄。而此時select命令仍可以產(chǎn)生結(jié)果。

Declare @bl?int;
Select @bl=年齡 from 學(xué)生表;

此時變量@i的值為22,即表中最后一行年齡數(shù)據(jù)。這是因為select對變量的賦值方式是遍歷數(shù)據(jù)中的全部記錄,然后將最后一條記錄賦給變量。

4.使用select命令為變量賦值的應(yīng)用

了解了select為變量賦值時遍歷全部數(shù)據(jù)的特性,用戶可以運用變量將表中的一列記錄變成一行值顯示,仍以前文提到的學(xué)生表為例:

Declare @i varchar(100)
Set @i=''
Select @i=@i+姓名 from學(xué)生表

此時變量@i的值為“張三李四王麗薇姿”。

這種方法在實際工作中可以結(jié)合存儲過程運用,提高SQL語句執(zhí)行效率。需要注意的是,若上例的學(xué)生表中“姓名”列有null值,則變量@i的值也是null,這是因為null與任何值進行運算結(jié)果都是null,此時需要通過isnull函數(shù)對null值進行調(diào)整。

三、顯示結(jié)果

變量的結(jié)果有兩種顯示方式,即文本顯示(print)和表格顯示(select)兩種.

總結(jié)

相關(guān)文章

最新評論