- MySQL 8从入门到精通(视频教学版)
- 王英英
- 725字
- 2021-04-02 00:02:54
6.5 条件判断函数
条件判断函数也称为控制流程函数,根据满足的不同条件,执行相应的流程。MySQL中进行条件判断的函数有IF、IFNULL和CASE。本节将分别介绍各个函数的用法。
6.5.1 IF(expr,v1,v2)函数
IF(expr, v1, v2):如果表达式expr是TRUE(expr <> 0 and expr <> NULL),则返回值为v1;否则返回值为v2。IF()的返回值为数字值或字符串值,具体情况视其所在语境而定。
【例6.85】使用IF()函数进行条件判断,输入语句如下:
1>2的结果为FALSE,IF(1>2,2,3)返回第2个表达式的值;1<2的结果为TRUE,IF(1<2,'yes ', 'no')返回第一个表达式的值;“test”小于“test1”,结果为true,IF(STRCMP('test','test1'),'no','yes')返回第一个表达式的值。
提示
如果v1或v2中只有一个明确是NULL,则IF()函数的结果类型为非NULL表达式的结果类型。
6.5.2 IFNULL(v1,v2)函数
IFNULL(v1,v2):假如v1不为NULL,则IFNULL()的返回值为v1;否则其返回值为v2。IFNULL()的返回值是数字或者字符串,具体情况取决于其所在的语境。
【例6.86】使用IFNULL()函数进行条件判断,输入语句如下:
IFNULL(1,2)虽然第二个值也不为空,但返回结果依然是第一个值;IFNULL(NULL,10)第一个值为空,因此返回10;“1/0”的结果为空,因此IFNULL(1/0, 'wrong')返回字符串“wrong”。
6.5.3 CASE函数
CASE expr WHEN v1 THEN r1 [WHEN v2 THEN r2]…[ELSE rn+1] END:如果expr值等于某个vn,则返回对应位置THEN后面的结果;如果与所有值都不相等,则返回ELSE后面的rn+1。
【例6.87】使用CASE value WHEN语句执行分支操作,输入语句如下:
CASE后面的值为2,与第二条分支语句WHEN后面的值相等,因此返回结果为“two”。
CASE WHEN v1 THEN r1 [WHEN v2 THEN r2]… ELSE rn+1] END:某个vn值为TRUE时,返回对应位置THEN后面的结果;如果所有值都不为TRUE,则返回ELSE后的rn+1。
【例6.88】使用CASE WHEN语句执行分支操作,输入语句如下:
1<0的结果为FALSE,因此函数返回值为ELSE后面的“false”。
提示
一个CASE表达式的默认返回值类型是任何返回值的相容集合类型,但具体情况视其所在语境而定。如果用在字符串语境中,则返回结果为字符串。如果用在数字语境中,则返回结果为十进制值、实数值或整数值。