MySQL五大类函数,前面已经介绍了聚合函数、字符串函数、数值型函数和时间日期函数,现在就只剩下控制流程函数,这篇介绍一下控制流程函数。控制流程函数主要是做一些数据的条件判断,按照需求把字段输出指定的内容,用于数据的分类、特征提出等,以便后续有针对性的进行数据分析。主要包括IF、CASE-WHEN、IFNULL、NULLIF。
【IF】
IF(condition, value_if_true, value_if_false
IF函数是最常用的判断语句,和Excel用法基本一样。IF函数根据条件的结果为true或false,返回第一个值,或第二个值。当然也是可以进行嵌套使用的。
判断class,如果大于等于3,就输出AAA,否则输出BBB。从结果可以看出,Null控制在判断语句中默认FALSE。
SELECT
class,
IF(class>=3,"AAA","BBB")
FROM
test
多层嵌套,如果score>=100,返回非常优秀,如果介于60-100之间返回一般,否则返回差。写法和Excel一样,SQL语句如下↓
SELECT
score,
IF(score>=100,"非常优秀",IF(score>=60,"一般","差"))
FROM
test
【IFNULL】
IFNULL函数接受两个参数,如果不是NULL,则返回第一个参数。否则,IFNULL函数返回第二个参数。两个参数可以是文字值或表达式。
IFNULL(expression, alt_value)
SELECT
class,
IFNULL(class,"这是一个空值")
FROM
test
【???小知识点】
如果含有空值,是不能就行算术运算的,结果都会返回空值,如下↓
SELECT
class,
score,
class + score
FROM
test
这个时候如果要运算,就需要先把空值变成0,然后就行算术运算。
SELECT
class,
score,
IFNULL(class,0) + score
FROM
test
【NULLIF】
NULLIF函数是接受2个参数的控制流函数之一。如果第一个参数等于第二个参数,则NULLIF函数返回NULL,否则返回第一个参数。
NULLIF(expression_1,expression_2);
如果expression_1=expression_2为true,则NULLIF函数返回NULL,否则返回expression_1 。
把NULL字符串转化为真的Null值,SQL语句如下↓
SELECT
class,
NULLIF(class,"NULL")
FROM
test
【CASE-WHEN】
如果多重判断的情况下,用IF就很麻烦,CASE WHEN语法就能很好地解决,而且实际中也是非常实用的语法。
简单函数↓
CASE [col_name] WHEN [value1] THEN [result1]…ELSE [default] END
SELECT
大区,
CASE
大区
WHEN "西南大区" THEN "XN"
WHEN "华北大区" THEN "HB"
ELSE "XXXX"
END AS "DQ"
FROM
province
搜索函数↓
CASE WHEN [expr] THEN [result1]…ELSE [default] END
搜索函数可以写判断,并且搜索函数只会返回第一个符合条件的值,其他case被忽略。
SELECT
score,
CASE
WHEN score<=60 THEN "0-60"
WHEN score<=80 THEN "80-80"
WHEN score<=100 THEN "80-100"
ELSE
"100+"
END as 范围
FROM
test
End