最近的專案寫的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 同時對多個變數同時賦值 不支援 支援 表示式返回多個值時 出錯 將返回的...