mysql的判斷語句方式
if
if 用于做條件判斷,具體的語法結(jié)構(gòu)如下,在if條件判斷的結(jié)構(gòu)中,ELSE IF 結(jié)構(gòu)可以有多個(gè),也可以沒有。
ELSE結(jié)構(gòu)可以有,也可以沒有。
? 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
如果判定條件有多個(gè),多個(gè)條件之間,可以使用 and 或 or 進(jìn)行連接。
方法一
-- 含義: 當(dāng)case_value的值為 when_value1時(shí),執(zhí)行statement_list1,當(dāng)值為 when_value2時(shí), 執(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;
方法二
-- 含義: 當(dāng)條件search_condition1成立時(shí),執(zhí)行statement_list1,當(dāng)條件search_condition2成 立時(shí),執(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)一次, 就會(huì)對(duì)n進(jì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)控制語句, 當(dāng)滿足until聲明的條件的時(shí)候,則退出循環(huán)
-- 先執(zhí)行一次邏輯,然后判定UNTIL條件是否滿足,如果滿足,則退出。如果不滿足,則繼續(xù)下一次循環(huán)
REPEAT
SQL邏輯...
UNTIL 條件
END REPEAT;案例
-- A. 定義局部變量, 記錄累加之后的值; -- B. 每循環(huán)一次, 就會(huì)對(duì)n進(jì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 實(shí)現(xiàn)簡單的循環(huán),如果不在SQL邏輯中增加退出循環(huán)的條件,可以用其來實(shí)現(xiàn)簡單的死循環(huán)。
LOOP可以配合一下兩個(gè)語句使用:
- LEAVE :配合循環(huán)使用,退出循環(huán)。
- ITERATE:必須用在循環(huán)中,作用是跳過當(dāng)前循環(huán)剩下的語句,直接進(jìn)入下一次循環(huán)。
[begin_label:] LOOP
SQL邏輯...
END LOOP [end_label];
LEAVE label; -- 退出指定標(biāo)記的循環(huán)體
ITERATE label; -- 直接進(jìn)入下一次循環(huán)案例
-- A. 定義局部變量, 記錄累加之后的值; -- B. 每循環(huán)一次, 就會(huì)對(duì)n進(jì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);
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL中VARCHAR和TEXT的區(qū)別小結(jié)
MySQL中VARCHAR和TEXT用于存儲(chǔ)字符串,VARCHAR可變長度存儲(chǔ)在行內(nèi),適合短文本;TEXT存儲(chǔ)在溢出頁,適合大文本,下面就來具體的了解一下兩者的區(qū)別,感興趣的可以了解一下2025-09-09
淺談MyISAM 和 InnoDB 的區(qū)別與優(yōu)化
InnoDB和MyISAM是在使用MySQL最常用的兩個(gè)表類型,各有優(yōu)缺點(diǎn),視具體應(yīng)用而定。下面我們就來具體探討下吧2015-07-07
MySQL將時(shí)間戳轉(zhuǎn)換為年月日格式的實(shí)現(xiàn)
在我們的項(xiàng)目開發(fā)過程中,經(jīng)常需要將時(shí)間戳或日期時(shí)間字段轉(zhuǎn)換為特定的格式,本文主要介紹了MySQL將時(shí)間戳轉(zhuǎn)換為年月日格式的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-08-08

