玖叶教程网

前端编程开发入门

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

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言