家庭寬帶做網(wǎng)站服務器嗎多合一seo插件破解版
一、引言
? ? 接下來,我們就進入函數(shù)的最后一個部分:流程函數(shù)。而流程控制函數(shù)在我們的日常開發(fā)過程是很有用的。
流程控制函數(shù)在我們 sql 語句當中,經常用來實現(xiàn)條件的篩選,從而提高語句的一個執(zhí)行效率。
我們主要介紹以下4個流程控制函數(shù)。
注意:
1、第三個和第四個基本上是一致的,都是 case 函數(shù)。
2、IF(value,t,f):意思是如果 value 的值為 true ,則返回 t ,否則返回 f 。
3、IFNULL(value1,value2):先判斷第一個參數(shù) value1 是否為空,如果不為空,返回 value1 ,而如果為空,返回 value2 。
4、CASE WHEN [ val1?] THEN [res1] ... ELSE [ default ] END :
case when :當什么時候。
當 val1 值為 true 的時候,則返回 res1 ,否則返回默認值 default ,語法塊結束后面加一個 end 。
5、CASE [ expr ] WHEN [ val1 ] THEN [ res1 ] ... ELSE [ default ] END:
下面這個也是類似:如果表達式 expr 的值為 val1?,則返回 res1 ,否則返回默認值,語法塊結束用 end 。
二、操作
接下來回到工具 DataGrip 去一一操作剛剛學習的函數(shù)。
1、IF(value,t,f);
如果? value的值為 true 則返回第二個字段的值 t,否則返回 f。
正常來說這個 value 應該是一個條件表達式。
SELECT IF(true,'OK','NO'); SELECT IF(false,'OK','NO');
2、IFNULL(value1,value2);
SELECT IFNULL('value','default');
如果給的字符串是空的字符串,它返回的也是空串,而不是返回默認值。
SELECT IFNULL('','default');
如果為null,就會返回設定的默認值。
SELECT IFNULL(null,'default');
3、CASE WHEN THEN ...?ELSE END(case 函數(shù))
emp表 初始數(shù)據(jù):
(1)需求:查詢emp表的員工姓名和工作地址(如果北京/上海---->一線城市,其他---->二線城市)
SELECT name,(CASE workaddress WHEN '北京'THEN '一線城市' WHEN '上海' THEN '一線城市' ELSE '二線城市' END ) AS '工作地址' FROM emp;
三、案例?
根據(jù)需求完成一下SQL語句的編寫。
(1)統(tǒng)計班級各個學生的成績。展示的規(guī)則如下:
1、>=85,展示優(yōu)秀。
2、>= 60,展示及格。否則,展示不及格。
完成這個案例,對控制函數(shù)的操作進行學習與鞏固。
(1)首先先創(chuàng)建一個成績表。
CREATE TABLE score (id INT COMMENT 'ID',name VARCHAR(20) COMMENT '姓名',math INT COMMENT '數(shù)學',english INT COMMENT '英語',chinese INT COMMENT '語文' ) COMMENT '學生成績表'; INSERT INTO score(ID, NAME, MATH, ENGLISH, CHINESE) VALUES (1,'Tom',67,88,95),(2,'Rose',23,66,90),(3,'Jack',56,98,76); SELECT * FROM score;
(2)接著完成題目的需求。
最終我們的表中的數(shù)據(jù)全部查詢出來之后,要把分數(shù)變成對應的 '優(yōu)秀'、'及格'或者是'不及格' 去展示出來。
SELECT id,name,(CASE WHEN math>=85 THEN '優(yōu)秀' WHEN math>=60 THEN '及格' ELSE '不及格' END ) AS '數(shù)學',(CASE WHEN english>=85 THEN '優(yōu)秀' WHEN english>=60 THEN '及格' ELSE '不及格' END ) AS '英語',(CASE WHEN chinese>=85 THEN '優(yōu)秀' WHEN chinese>=60 THEN '及格' ELSE '不及格' END ) AS '語文'FROM score;
這就是這篇博客關于流程控制函數(shù)的全部內容。?