MYSQL中可以實現類似IF判斷的方法

2021-09-27 12:59:20 字數 1271 閱讀 3932

方式一:case函式:流程控制函式

例子(用法一):

select

t.name,

(case t.***

when 1 then

'男'when 2 then

'女'else

'未知'

end) 性別

from

t_customer t

例子(用法二):

select

t.name,

(case

when t.***=1 then

'男'when t.***=2 then

'女'else

'未知'

end) 性別

from

t_customer t

方式二: if()函式使用case函式可以實現非常複雜的邏輯判斷,可是若只是實現「如果符合條件則返回a,否則返回b」這樣簡單的判斷邏輯的話,使用case函式就過於繁瑣。mysql提供了if()函式用於簡化這種邏輯判斷,其語法格式如下:if(expr1,expr2,expr3)

如果 expr1 為真(expr1 <> 0 以及 expr1 <> null),那麼 if() 返回 expr2,否則返回expr3。if()返回乙個數字或字串,這取決於它被使用的語境。

select t.name,if(t.weight<80,'正常','肥胖') 體重 from t_customer t
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。

例子:

(完)

MYSQL中可以實現類似IF判斷的方法

新建一張客戶表,如下 1 男,2 女,3 未知 level是客戶的級別 1 超級vip客戶,2 vip客戶,3 普通客戶 方式一 case函式 流程控制函式 用法一 case expression when value1 then returnvalue1 when value2 then retu...

mysql 實現類似開窗函式的功能

mysql8 已經支援開窗函式 sql server 的開窗函式 mysql8 之前的版本不支援開窗函式 目的,取每個channel 按created on 倒序排的前20條 示例如下 有部分冗餘資料 select id,url,channel,created on,rank from select...

MySQL實現類似Oracle序列的方案

mysql實現類似oracle的序列 oracle一般使用序列 sequence 來處理主鍵字段,而my程式設計客棧sql則提供了自增長 increment 來實現類似的目的 但在實際使用過程中發現,mysql的自增長有諸多的弊端 不能控制步長 開始索引 是否迴圈等 若需要遷移資料庫,則對於主鍵這塊...