基於SQL中SET與SELECT賦值的區別詳解

2022-10-03 08:54:11 字數 1335 閱讀 1792

最近的專案寫的sql比較多,經常會用到對變數賦值,而我使用set和select都會達到效果。

那就有些迷惑,這兩者有什麼區別呢?什麼時候哪該哪個呢?

經過網上的查詢,及個人練習,總結兩者有以下幾點主要區別:

假定有設定變數:

複製** **如下:

declare @var1 varchar(1)

declare @var2 varchar(2)

1、select可以在一條語句裡對多個變數同時賦值,而set只能一次對乙個變數賦值,如下:

複製** **如下:

select @var1='y',@var2='n'

-- 而set要達到同樣的效果,需要:

set @var1='y'

set @var2='n'

/*   說到這個,sql內建的變數:@@error 和 @@rowcount必須要在一句sql語句中捕獲。如果用set分兩句來獲取它們,將獲取不完整,這時就應該用select來獲取值。

*/2、表示式返回多個值時,用set將會出錯,而select將取最後乙個值,如下:

複製** **如下:

----以下假定permission表有多個isright記錄

select @var1 = isright from permission   --將取最後乙個值

set @var1 = isright from permission   --將報錯

3、表示式無返回值時,用set將置變數值為null,用select交保持變數值,如下:

複製** **如下:

----以下假定permission記錄為空

set @var1 = '初始值'

select @var1 = isright from permission   --此時@var1為'初始值'

set  @var1 = (select isright from permission)   --此時@var1為null

4、使用標量子查詢時,如果無返回值,set和select一樣,都將置為nwzctqfcull,www.cppcns.com如下:

複製** **如下:

----以下假定permission記錄為空

set @var1 = '初始值'

select @var1 =wzctqfc(select isright from permission 程式設計客棧)   --此時@var1為null 程式設計客棧

set  @var1 = ( select isright from permission)   --此時@var1為null

本文標題: 基於sql中set與select賦值的區別詳解

本文位址:

SQL中select與set的區別

下表列出 set 與 select 的區別 select set同時對多個變數同時賦值時支援 不支援表示式返回多個值時 將返回的最後乙個值賦給變數 出錯表示式未返回值 時變數保持原值 變數被賦null值 1 同時對多個變數同時賦值時 declare a varchar 128 b varchar 1...

sql中 set 和select 的區別

sql server 中對已經定義的變數賦值的方式用兩種,分別是 set 和 select。對於這兩種方式的區別,sql server 聯機叢書中已經有詳細的說明,但很多時候我們 並沒有注意,其實這兩種方式還是有很多差別的。sql server推薦使用 set 而不是 select 對變數進行賦值。...

sql語句對變數賦值 select與set的區別

sql server推薦使用 set 而不是 select 對變數進行賦值。當表示式返回乙個值並對乙個變數進行賦值時,推薦使用 set 方法。下表列出 set 與 select 的區別。請特別注意紅色部分。set select 同時對多個變數同時賦值 不支援 支援 表示式返回多個值時 出錯 將返回的...