新建一張客戶表,以下:sex:1-男,2-女,3-未知;level是客戶的級別:1-超級VIP客戶,2-VIP客戶,3-普通客戶mysql
方式一:case函數:流程控制函數sql
用法一:express
CASE expression WHEN value1 THEN returnvalue1 WHEN value2 THEN returnvalue2 WHEN value3 THEN returnvalue3 …… ELSE defaultreturnvalue END
例子:oracle
SELECT t.NAME, ( CASE t.sex WHEN 1 THEN '男' WHEN 2 THEN '女' ELSE '未知' END ) 性別 FROM t_customer t
結果:函數
用法二:spa
CASE WHEN condition1 THEN returnvalue1 WHEN condition 2 THEN returnvalue2 WHEN condition 3 THEN returnvalue3 …… ELSE defaultreturnvalue END
例子:code
SELECT t.NAME, ( CASE WHEN t.sex=1 THEN '男' WHEN t.sex=2 THEN '女' ELSE '未知' END ) 性別 FROM t_customer t
方式二: IF()函數blog
使用CASE函數能夠實現很是複雜的邏輯判斷,但是若只是實現「若是符合條件則返回A,不然返回B」這樣簡單的判斷邏輯的話,使用CASE函數就過於繁瑣。MYSQL提供了IF()函數用於簡化這種邏輯判斷,其語法格式以下:IF(expr1,expr2,expr3)字符串
若是 expr1 爲真(expr1 <> 0 以及 expr1 <> NULL),那麼 IF() 返回 expr2,不然返回expr3。IF()返回一個數字或字符串,這取決於它被使用的語境。
例子:it
select t.name,if(t.weight<80,'正常','肥胖') 體重 from t_customer t
感受這個做用和oracle 的nvl函數相似
mysql還有一個IFNULL(value1,value2)函數,這個函數通常用來替換 NULL 值的,咱們知道 NULL 值是不能參與數值運算的,好比把emp員工表的員工的提成給加100,能夠這麼幹:
update emp set comm = IFNULL(comm,0)+100,這樣就把提成comm爲null的替換成了0,從而不會出現null+100=null。
方式三:字符串的集合操做ELT()
ELT(N,str1,str2,str3,...)
若是 N = 1,返回 str1,若是N = 2,返回 str2,等等。若是 N 小於 1 或大於參數的數量,返回 NULL。
例子:
SELECT t. NAME, ELT( t. LEVEL, '超級VIP', 'VIP', '普通' ) 客戶類型 FROM t_customer t