【mysql】-mysql常用函数

单行函数:

  • 字符串拼接:CONCAT('a','b','c')
  • 字符串截取:SUBSTR('abc',1,2)//从第一位开始,截取abc长度为2。结果为ab
  • 获取 字符串长度:LENGTH('abc')
  • 数字四舍五入:ROUND(3.1415,3)//结果为3.142
  • 数字截断:TRUNC(3.1415,3)//结果为3.141
  • 判断是否为null:IFNULL(ex,em)//判断ex是否为null,如果是null,则用em来代替
  • 返回第一个非空值:COALESCE(字段1,0)//如果字段1为null,就取0
  • 流程控制(类似三元表达式):if(a>b,'a','b')
  • case when:case(字段) when 值1 then 显示的值1 when 值2 then 显示的值2 else 显示的值3 end //应用:计算某状态下人数
count( CASE WHEN ( student_exam_state = 0 ) THEN student_exam_state END ) AS countUnlisted
  • 时间:
  • DATE_ADD(now(),INTERVAL 30 MINUTE)//在当前时间(第一个参数)基础上加30(第二个参数)分钟(第三个参数)
  • DATE_sub(now(),INTERVAL 1 HOUR)//当前时间基础上减1小时
  • DATEDIFF('2020-5-31 20:12:04','2020-5-29 20:10:18')//返回两个时间相差天数
  • TIMEDIFF('2020-5-31 20:12:04','2020-5-29 20:02:18')//返回两个时间相差时分秒

多行函数//一般配合group by使用

  • count(*)//求条数,性能上count(*)>count(1)>count(主键id)>count(字段)
  • sum()//求和
  • max()//求最大值
  • min()//求最小值
  • avg()//求平均值
  • 两列拼接:GROUP_CONCAT(字段1) group by 字段2
  • 行转列:利用多行函数sum()或max()

SELECT user_name ,

    SUM(CASE course WHEN '数学' THEN score ELSE 0 END ) 数学,

    MAX(CASE course WHEN '语文' THEN score ELSE 0 END ) 语文,

    MAX(CASE course WHEN '英语' THEN score ELSE 0 END ) 英语

FROM test_tb_grade

GROUP BY USER_NAME;

这些函数都不用背,知道有这么函数能用,实际开发需要的时候再查就好了,毕竟记是记不住的。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章