MySQL流程控制函数

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

图片

◆ PowerBI开场白
◆ Python高德地图可视化
◆ Python不规则条形图

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容