sql條件語句

2021-08-30 18:37:33 字數 3323 閱讀 7420

transact-sql 語言使用的流程控制命令與常見的程式語言類似主要有以下幾種控制命令。

4.6.1 if…else

其語法如下:

if 《條件表示式》

《命令列或程式塊》

[else [條件表示式]

《命令列或程式塊》]

其中《條件表示式》可以是各種表示式的組合,但表示式的值必須是邏輯值「真」或「假」。else子句是可選的,最簡單的if語句沒有else子句部分。if…else用來判斷當某一條件成立時執行某段程式,條件不成立時執行另一段程式。如果不使用程式塊,if或else只能執行一條命令。if…else可以進行巢狀。

例4-9

declare@x int,@y int,@z int

select @x=1,@y=2, @z=3

if@x>@y

print'x>y' --列印字串'x>y'

else if@y>@z

print'y>z'

else print'z>y'

執行結果如下

z>y

注意:在transact-sql中最多可巢狀32級。

4.6.2 begin…end

其語法如下:

begin

《命令列或程式塊》

endbegin…end用來設定乙個程式塊,將在begin…end內的所有程式視為乙個單元執行begin…end經常在條件語句,如if…else中使用。在begin…end中可巢狀另外的begin…end來定義另一程式塊。

4.6.3 case

case 命令有兩種語句格式:

case 《表示式》

when 《表示式》then《表示式》

… when《表示式》then《表示式》

[else《表示式》]

endcase

when 《條件表示式》 then 《表示式》

when 《條件表示式》 then 《表示式》

[else 《表示式》]

endcase命令可以巢狀到sql命令中。

例4-10:調整員工工資,工作級別為「1」的上調8%,工作級別為「2」的上調7%,工作級別為「3」的上調6%,其它上調5%。

use pangu

update employee

set e_wage =

case

when job_level = 』1』 then e_wage*1.08

when job_level = 』2』 then e_wage*1.07

when job_level = 』3』 then e_wage*1.06

else e_wage*1.05

end注意:執行case子句時,只執行第乙個匹配的子名。

4.6.4 while…continue…break

其語法如下:

while 《條件表示式》

begin

《命令列或程式塊》

[break]

[continue]

[命令列或程式塊]

endwhile 命令在設定的條件成立時會重複執行命令列或程式塊。continue命令可以讓程式跳過continue 命令之後的語句,回到while 迴圈的第一行命令。break 命令則讓程式完全跳出迴圈,結束while 命令的執行。while 語句也可以巢狀。

例4-11:

declare @x int @y int @c int

例4-11:

declare @x int, @y int, @c int

select @x = 1, @y=1

while @x < 3

begin

print @x --列印變數x 的值

while @y < 3

begin

select @c = 100*@ x+ @y

print @c --列印變數c 的值

select @y = @y + 1

endselect @x = @x + 1

select @y = 1

end執行結果如下

1101

1022

201202

4.6.5 waitfor

其語法如下:

waitfor

waitfor 命令用來暫時停止程式執行,直到所設定的等待時間已過或所設定的時間已到才繼續往下執行。其中『時間』必須為datetime 型別的資料,如:『11:15:27』,

但不能包括日期各關鍵字含義如下:

· delay 用來設定等待的時間最多可達24 小時;

· time 用來設定等待結束的時間點;

· errorexit 直到處理非正常中斷;

· proces***it 直到處理正常或非正常中斷;

· mirrorexit 直到映象裝置失敗。

例4-12 等待1 小時2 分零3 秒後才執行select 語句

waitfor delay 』01:02:03』

select * from employee

例4-13:等到晚上11 點零8 分後才執行select 語句

waitfor time 』23:08:00』

select * from employee

4.6.6 goto

語法如下:

goto 識別符號

goto 命令用來改變程式執行的流程,使程式跳到標有識別符號的指定的程式行再繼續往下執行。作為跳轉目標的識別符號可為數字與字元的組合,但必須以「:」結尾,如『12:』或『a_1:』。在goto 命令列,識別符號後不必跟「:」。

例4-14 分行列印字元『1』、『2』、『3』、『4』、『5』

declare @x int

select @x = 1

label_1

print @x

select @x = @x + 1

while @x < 6

goto label_1

4.6.7 return

語法如下

return [整數值]

return 命令用於結束當前程式的執行,返回到上乙個呼叫它的程式或其它程式。在括號內可指定乙個返回值。

例4-15

declare @x int @y int

select @x = 1 @y = 2

if x>y

return 1

else

return 2

如果沒有指定返回值,sql server 系統會根據程式執行的結果返回乙個內定值,如

表4-5 所示。

如果執行過程產生了多個錯誤,sql server系統將返回絕對值最大的數值;如果此時使用者此時定義了返回值,則以返回使用者定義的值。return語句不能返回null值。

SQL條件判斷語句

select case when price is null then not yet priced when price 10 then very reasonable title when price 10 and price 20 then coffee table title else ex...

SQL常用條件查詢語句

select from table1 where 工資 2500 and 工資 3000 同上 select 姓名 from table1 where 性別 0 and 工資 4000 select from table1 where not 工資 3200 select from table1 o...

SQL語句多條件查詢

sql多條件查詢中如果有and和or,and的優先順序高於or,如果不加括號會先執行and,然後再執行or 資料表 一 查詢時先且查詢,則先and條件查詢,查詢結果與or後面的條件進行或查詢 sql語句 select from ceshi where name a and age 10 or 1查詢...