【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;

這些函數都不用背,知道有這麼函數能用,實際開發需要的時候再查就好了,畢竟記是記不住的。

 

 

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