Mysql实用函数记录(一) | 青训营笔记

44 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天

本模块主要用于记录在平时学习或编码中了解到的mysql的一些十分好用的函数。正所谓好记性不如烂笔头,因此我把学习到的这些函数记录下来方便日后的复习回顾。

1.IF()、IFNULL()、NULLIF()、ISNULL()函数的使用

  • IF(expr1,expr2,expr3)
    • 相当于Java里面的boolean ? a : b
    • 如果expr1的值为true,则返回expr2的值,如果expr1的值为false,则返回expr3的值
  • IFNULL(expr1,expr2)
    • 如果expr1的值为null,则返回expr2的值,如果expr1的值不为null,则返回expr1的值
  • NULLIF(expr1,expr2)
    • 如果expr1=expr2成立,那么返回值为null,否则返回值为expr1的值
  • ISNULL(expr)
    • 如果expr的值为null,则返回1,如果expr1的值不为null,则返回0

2.NUIONNUION ALL函数的使用

  • 两者都是将两个select语句的结果作为一个整体显示出来
  • 区别
    • UNION:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序,筛选掉重复的记录
    • UNION ALL:对两个结果集进行并集操作,包括重复行,不进行排序; 如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了
  • 注意事项
    • 两者内部的SELECT语句必须拥有相同数量的列
    • 两者内部的SELECT语句中列的顺序必须相同
    • 若顺序不同,结果字段的顺序以union all前面的表字段顺序为准,union all 后面的表的数据会按照顺序依次附在后面

3.CONCAT()

  • concat(str1,str2,...)
    • 用途:将多个字符串连接成一个字符串
    • 返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null
  • concat_ws(separator, str1, str2, ...)
    • 将多个字符串连接成一个字符串,且可以指定分隔符
    • 第一个参数指定分隔符。需要注意的是分隔符不能为null,如果为null,则返回结果为null
  • group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator] )
    • 将group by产生的同一个分组中的值连接起来,返回一个字符串结果
    • distinct可以排除重复值;如果希望对结果中的值进行排序,可以使用order by子句;separator分隔符是一个字符串值,默认为一个逗号
  • concat_ws()和group_concat()联合使用
    • 查询以name分组的所有组的id和score:select name,group_concat(concat_ws('-',id,score) order by id) as 别名 from 表名 group by name;