柚子快報邀請碼778899分享:數(shù)據(jù)庫 mysql的判斷語句
柚子快報邀請碼778899分享:數(shù)據(jù)庫 mysql的判斷語句
if
if 用于做條件判斷,具體的語法結構如下,在
if
條件判斷的結構中,
ELSE IF
結構可以有多個,也可以沒有。
ELSE
結構可以有,也可以沒有。
IF 條件1 THEN
.....
ELSEIF 條件2 THEN -- 可選
.....
ELSE -- 可選
.....
END IF;
案例
create procedure p3()
begin
declare score int default 58;
declare result varchar(10);
if score >= 85 then
set result := '優(yōu)秀';
elseif score >= 60 then
set result := '及格';
else
set result := '不及格';
end if;
select result;
end;
call p3();
case
如果判定條件有多個,多個條件之間,可以使用 and 或 or 進行連接。
方法一
-- 含義: 當case_value的值為 when_value1時,執(zhí)行statement_list1,當值為 when_value2時,
執(zhí)行statement_list2, 否則就執(zhí)行 statement_list
CASE case_value
WHEN when_value1 THEN statement_list1
[ WHEN when_value2 THEN statement_list2] ...
[ ELSE statement_list ]
END CASE;
方法二
-- 含義: 當條件search_condition1成立時,執(zhí)行statement_list1,當條件search_condition2成
立時,執(zhí)行statement_list2, 否則就執(zhí)行 statement_list
CASE
WHEN search_condition1 THEN statement_list1
[WHEN search_condition2 THEN statement_list2] ...
[ELSE statement_list]
END CASE;
案例
create procedure p6(in month int)
begin
declare result varchar(16);
case
when month >= 1 and month <= 3 then
set result := '第一季度';
when month >= 4 and month <= 6 then
set result := '第二季度';
when month >= 7 and month <= 9 then
set result := '第三季度';
when month >= 10 and month <= 12 then
set result := '第四季度';
else
set result := '非法參數(shù)';
end case ;
select concat('您輸入的月份為: ',month, ', 所屬的季度為: ',result);
end;
call p6(16);
while
while
循環(huán)是有條件的循環(huán)控制語句。滿足條件后,再執(zhí)行循環(huán)體中的
SQL
語句。
-- 先判定條件,如果條件為true,則執(zhí)行邏輯,否則,不執(zhí)行邏輯
WHILE 條件 DO
SQL邏輯...
END WHILE;
案例
-- A. 定義局部變量, 記錄累加之后的值;
-- B. 每循環(huán)一次, 就會對n進行減1 , 如果n減到0, 則退出循環(huán)
create procedure p7(in n int)
begin
declare total int default 0;
while n>0 do
set total := total + n;
set n := n - 1;
end while;
select total;
end;
call p7(100);
?repeat
repeat
是有條件的循環(huán)控制語句
,
當滿足
until
聲明的條件的時候,則退出循環(huán)
-- 先執(zhí)行一次邏輯,然后判定UNTIL條件是否滿足,如果滿足,則退出。如果不滿足,則繼續(xù)下一次循環(huán)
REPEAT
SQL邏輯...
UNTIL 條件
END REPEAT;
案例
-- A. 定義局部變量, 記錄累加之后的值;
-- B. 每循環(huán)一次, 就會對n進行-1 , 如果n減到0, 則退出循環(huán)
create procedure p8(in n int)
begin
declare total int default 0;
repeat
set total := total + n;
set n := n - 1;
until n <= 0
end repeat;
select total;
end;
call p8(10);
call p8(100);
loop
LOOP
實現(xiàn)簡單的循環(huán),如果不在
SQL
邏輯中增加退出循環(huán)的條件,可以用其來實現(xiàn)簡單的死循環(huán)。LOOP可以配合一下兩個語句使用:
LEAVE :配合循環(huán)使用,退出循環(huán)。 ITERATE:必須用在循環(huán)中,作用是跳過當前循環(huán)剩下的語句,直接進入下一次循環(huán)。
[begin_label:] LOOP
SQL邏輯...
END LOOP [end_label];
LEAVE label; -- 退出指定標記的循環(huán)體
ITERATE label; -- 直接進入下一次循環(huán)
?案例
-- A. 定義局部變量, 記錄累加之后的值;
-- B. 每循環(huán)一次, 就會對n進行-1 , 如果n減到0, 則退出循環(huán) ----> leave xx
create procedure p9(in n int)
begin
declare total int default 0;
sum:loop
if n<=0 then
leave sum;
end if;
set total := total + n;
set n := n - 1;
end loop sum;
select total;
end;
call p9(100);
柚子快報邀請碼778899分享:數(shù)據(jù)庫 mysql的判斷語句
好文推薦
本文內(nèi)容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉載請注明,如有侵權,聯(lián)系刪除。