MySQL流程函數(shù)常見用法實(shí)例分析
本文實(shí)例講述了MySQL流程函數(shù)常見用法。分享給大家供大家參考,具體如下:
流程函數(shù)是MySQL相對(duì)常用的一類函數(shù), 用戶可以使用這類函數(shù)在一個(gè)SQL語句中實(shí)現(xiàn)條件選擇, 這樣能夠提高效率.
下面列出了MySQL跟條件有關(guān)的流程函數(shù)
| 函數(shù) | 功能 |
| IF(expr1,expr2,expr3) | 如果expr1是真, 返回expr2, 否則返回expr3 |
| IFNULL(expr1,expr2) | 如果expr1不是NULL,返回expr1,否則返回expr2 |
| CASE WHEN [value1] THEN[result1]… ELSE[default] END | 如果value是真, 返回result1,否則返回default |
| CASE [expr] WHEN [value1] THEN[result1]… ELSE[default] END | 如果expr等于value1, 返回result1,否則返回default |
下面的例子中模擬對(duì)職員進(jìn)行分類,首先創(chuàng)建一個(gè)職員薪水表:
create table salary(userid int, salary decimal(9,2));
插入一些測(cè)試數(shù)據(jù)
insert into salary values (1,1000),(2,2000),(3,3000),(4,4000),(5,5000),(1,null);
數(shù)據(jù)如下
mysql> select * from salary; +--------+---------+ | userid | salary | +--------+---------+ | 1 | 1000.00 | | 2 | 2000.00 | | 3 | 3000.00 | | 4 | 4000.00 | | 5 | 5000.00 | | 1 | NULL | +--------+---------+ 6 rows in set (0.00 sec)
接下來, 通過這個(gè)表來介紹各個(gè)函數(shù)的應(yīng)用.
IF(expr1,expr2,expr3)函數(shù): 這里認(rèn)為月薪在2000元以上的職員屬于高薪, 用"high'表示; 而2000以下的職員屬于低薪, 用'low'來表示.
mysql> select if(salary>2000, 'high', 'low') from salary; +--------------------------------+ | if(salary>2000, 'high', 'low') | +--------------------------------+ | low | | low | | high | | high | | high | | low | +--------------------------------+ 6 rows in set (0.00 sec)
IFNULL(expr1,expr2)函數(shù): 這個(gè)函數(shù)一般用來替換NULL值, 我們知道NULL值是不能參參與數(shù)值運(yùn)算的, 下面這個(gè)語句就是把NULL值用0替換.
mysql> select ifnull(salary,0) from salary; +------------------+ | ifnull(salary,0) | +------------------+ | 1000.00 | | 2000.00 | | 3000.00 | | 4000.00 | | 5000.00 | | 0.00 | +------------------+ 6 rows in set (0.00 sec)
CASE WHEN [value1] THEN[result1]… ELSE[default] END函數(shù):這里可以用case when..then函數(shù)實(shí)現(xiàn)上面例子中高薪低薪的問題.
mysql> select CASE WHEN salary<=2000 THEN 'low' else 'high' END from salary; +---------------------------------------------------+ | CASE WHEN salary<=2000 THEN 'low' else 'high' END | +---------------------------------------------------+ | low | | low | | high | | high | | high | | high | +---------------------------------------------------+ 6 rows in set (0.00 sec)
CASE [expr] WHEN [value1] THEN[result1]… ELSE[default] END函數(shù):這里還可以分為多種情況把職員的薪水分為多個(gè)檔次,比如下面的例子分成高、中、低3種情況。同樣可以分成更多種情況,這里不再舉例了,有興趣的朋友可以自己測(cè)試一下
mysql> select CASE salary WHEN 1000 THEN 'low' when 2000 THEN 'mid' ELSE 'high' END from salary; +-----------------------------------------------------------------------+ | CASE salary WHEN 1000 THEN 'low' when 2000 THEN 'mid' ELSE 'high' END | +-----------------------------------------------------------------------+ | low | | mid | | high | | high | | high | | high | +-----------------------------------------------------------------------+ 6 rows in set (0.00 sec)
更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL常用函數(shù)大匯總》、《MySQL日志操作技巧大全》、《MySQL事務(wù)操作技巧匯總》、《MySQL存儲(chǔ)過程技巧大全》及《MySQL數(shù)據(jù)庫鎖相關(guān)技巧匯總》
希望本文所述對(duì)大家MySQL數(shù)據(jù)庫計(jì)有所幫助。
相關(guān)文章
Myeclipse連接mysql數(shù)據(jù)庫心得體會(huì)
這篇文章主要為大家詳細(xì)介紹了MyEclipse連接MySQL數(shù)據(jù)庫圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10
分析一條sql的性能的標(biāo)準(zhǔn)總結(jié)
在本篇文章里小編給各位分享了關(guān)于分析一條sql的性能的相關(guān)知識(shí)點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們學(xué)習(xí)下。2019-07-07
mysql 8.0.16 Win10 zip版本安裝配置圖文教程
這篇文章主要為大家詳細(xì)介紹了mysql 8.0 Win10 zip版本安裝配置圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06
MySQL數(shù)據(jù)庫備份恢復(fù)實(shí)現(xiàn)代碼
這篇文章主要介紹了MySQL數(shù)據(jù)庫備份恢復(fù)實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06

