MySQL控制流函數(shù)(-if?,elseif,else,case...when)
前言
不管是任何的編程語言,邏輯判斷是必不可缺的一個(gè)板塊;在Python、C、java這些火熱的編程語言下,邏輯判斷也是編程語言的一個(gè)亮點(diǎn)。
IF(expr1,expr2,expr3) 簡(jiǎn)單邏輯判斷
如果第一個(gè)條件成立,那么就返回expr2,如果條件不成立,那么就返回expr3

IFNULL(v1,v2) 空值替換
如果 v1 的值不為 NULL,則返回 v1,否則返回 v2。

??ISNULL(expression) 空值檢測(cè)
判斷表達(dá)式是否為 NULL
如果為空就會(huì)返回1,不為空就會(huì)返回0,有時(shí)候我們用于邏輯判斷,或者循環(huán)語句的時(shí)候可以采用

??NULLIF(expr1, expr2) 字符串比較
比較兩個(gè)字符串,如果字符串 expr1 與 expr2 相等 返回 NULL,否則返回 expr1

但是在應(yīng)用型的編程中,第一個(gè)還是用的比較的多,那么有的人就會(huì)想,有時(shí)候我們有多個(gè)條件需要比較的,那么這個(gè)方法就無法實(shí)現(xiàn)了,又該如何去實(shí)現(xiàn)呢?
??case 函數(shù)
CASE expression WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... WHEN conditionN THEN resultN ELSE result END
CASE 表示函數(shù)開始,END 表示函數(shù)結(jié)束。如果 condition1 成立,則返回 result1, 如果 condition2 成立,則返回 result2,當(dāng)全部不成立則返回 result,而當(dāng)有一個(gè)成立之后,后面的就不執(zhí)行了。
傳入一個(gè)參數(shù)即可,后面我們?cè)趯懘鎯?chǔ)過程(函數(shù))的時(shí)候,可以充分的應(yīng)用

這里沒有傳參,知識(shí)按照邏輯判斷進(jìn)行,如果為真那么就會(huì)返回結(jié)果,如果第一個(gè)條件就已經(jīng)滿足了,那么就不會(huì)執(zhí)行后續(xù)的判斷了

?? 實(shí)操案例
準(zhǔn)備數(shù)據(jù)
-- 創(chuàng)建訂單表 create table orders( oid int primary key, -- 訂單id price double, -- 訂單價(jià)格 payType int -- 支付類型(1:微信支付 2:支付寶支付 3:銀行卡支付 4:其他) ); insert into orders values(1,1200,1); insert into orders values(2,1000,2); insert into orders values(3,200,3); insert into orders values(4,3000,1); insert into orders values(5,1500,2);
我們可以通過兩種方式的語法來講我們的支付方式顯示出現(xiàn),因?yàn)樵跇I(yè)務(wù)場(chǎng)景中我們?yōu)榱吮WC數(shù)據(jù)的有效性和保密性,有些數(shù)據(jù)我們會(huì)公司內(nèi)部的編碼實(shí)現(xiàn),那么需要將其展示到老板的眼前的時(shí)候,這個(gè)時(shí)候就需要你來了


上述分別是用了等值判斷和值的映射去實(shí)現(xiàn),一般我更喜歡使用第一種,因?yàn)橛袝r(shí)候還可以范圍運(yùn)算
學(xué)到這里的小伙伴,可能就會(huì)疑問為什么,MySQL編程中如此的單一了,如果你覺得單一,那么你肯定是再想為什么不能實(shí)現(xiàn)控制流語句呢?
??IF ELSE 做為流程控制語句使用
這個(gè)一般和存儲(chǔ)過程搭配使用,相對(duì)于Python中的函數(shù),存儲(chǔ)過程就是函數(shù)
IF search_condition THEN statement_list [ELSEIF search_condition THEN] statement_list ... [ELSE statement_list] END IF
與PHP中的IF語句類似,當(dāng)IF中條件search_condition成立時(shí),執(zhí)行THEN后的statement_list語句,否則判斷ELSEIF中的條件,成立則執(zhí)行其后的statement_list語句,否則繼續(xù)判斷其他分支。當(dāng)所有分支的條件均不成立時(shí),執(zhí)行ELSE分支。search_condition是一個(gè)條件表達(dá)式,可以由“=、<、<=、>、>=、!=”等條件運(yùn)算符組成,并且可以使用AND、OR、NOT對(duì)多個(gè)表達(dá)式進(jìn)行組合。
注意:IF作為一條語句,在END IF后需要加上分號(hào)“;”以表示語句結(jié)束,其他語句如CASE、LOOP等也是相同的。
例如:
SELECT olddb.STATUS INTO @status_temp FROM olddb.checklist WHERE ID = NEW.ID - 1000000; IF @status_temp < 5 THEN SET NEW.status = @status_temp +1; ELSEIF @status_temp = 5 THEN SET NEW.status = 7; ELSEIF @status_temp = 6 THEN SET NEW.status = 10; ELSEIF @status_temp = 7 THEN SET NEW.status = 11; END IF;
到此這篇關(guān)于MySQL控制流函數(shù)(-if ,elseif,else,case...when)的文章就介紹到這了,更多相關(guān)MySQL控制流函數(shù) 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mysql定時(shí)數(shù)據(jù)庫備份實(shí)現(xiàn)的保姆級(jí)教程
數(shù)據(jù)備份本身主要是為了預(yù)防一些意外,例如服務(wù)器或者個(gè)人電腦的硬件故障、人為的錯(cuò)誤操作等情況,這篇文章主要給大家介紹了Mysql定時(shí)數(shù)據(jù)庫備份實(shí)現(xiàn)的保姆級(jí)教程,需要的朋友可以參考下2024-12-12
Mysql報(bào)錯(cuò)1292:Incorrect datetime value for 
本文主要介紹了Mysql報(bào)錯(cuò)1292:Incorrect datetime value for column create_time at row 1 解決方案,1292 是指插入或更新操作時(shí),日期或時(shí)間值不正確引起的錯(cuò)誤,下面就來介紹一下2024-02-02
MySql 錯(cuò)誤Incorrect string value for column
能使用中文進(jìn)行搜索,但是insert into 中文是可以的。我的數(shù)據(jù)庫和數(shù)據(jù)表中所有的charset都是設(shè)置的utf8。2010-12-12
Mysql常用基準(zhǔn)測(cè)試命令總結(jié)
在本篇文章中我們給大家分享了關(guān)于Mysql常用基準(zhǔn)測(cè)試命令的總結(jié)內(nèi)容,有需要的讀者們可以學(xué)習(xí)下。2018-10-10

