MySQL學習筆記-函式
阿新 • • 發佈:2020-07-27
目錄
函式
分類:
- 分組函式:將一組值進行統計,得出一個值。
- 單行函式:將一個值進行處理,得出一個值。
呼叫語句:
select 函式名(實參列表);
分組函式:
分組函式這一塊在我的另一篇文章MySQL學習筆記-查詢中講解過,這裡不做贅述,有興趣的同學可以過去看一下。
單行函式:
1. 字元函式
常用字元函式:
- length:獲取位元組長度
SELECT LENGTH('abc張三');
- concat:拼接字串
- upper:將小寫字元轉換成大寫
- lower:將大寫字元轉換成小寫
SELECT UPPER('ABC'); SELECT LOWER('ABC'); #案例:將姓轉大寫,名轉小寫,然後拼接 SELECT CONCAT(UPPER(last_name),' ',LOWER(first_name)) 姓名 FROM employees;
- instr:獲取字串第一次出現的索引,索引從1開始,若找不到則返回0
SELECT INSTR('張三丰愛上了三豐的郭襄','楊過');
- substr:擷取一段字串
SELECT SUBSTR('郭襄愛上了楊過',6); SELECT SUBSTR('郭襄愛上了楊過',1,2);
- lpad:左填充
SELECT LPAD('尹志平愛上了',5,'*');
- rpad:右填充
- trim:去除前後空格或特殊字元
SELECT LENGTH(TRIM(' 小 龍 女 ')) 美女; SELECT TRIM('a' FROM 'aaaaaaaqqqqqq小qq龍q女qqqqqqqqqqqqqq') 美女;
2. 數學函式
常用的數學函式:
- ceil:
#向上取整,返回>=該引數的最小整數 SELECT CEIL(-1.0);
- floor:
#向下取整,返回<=該引數的最大整數 SELECT FLOOR(-1.0);
- round:
#四捨五入,先按絕對值四捨五入,然後加正負號 SELECT ROUND(-1.56); SELECT ROUND(1.537,1);
- rand:
#隨機數,返回0-1之間的小數,不包含1 SELECT RAND(); #返回50-100 a——b floor(rand()*(b-a+1)+a) SELECT CEIL(RAND()*50+50); SELECT FLOOR(RAND()*51+50);
- truncate:
#截斷 #返回1.9 SELECT TRUNCATE(1.99,1); #返回314 SELECT TRUNCATE(314.15,0); #返回310 SELECT TRUNCATE(314.15,-1);
3. 日期函式
常用的日期函式:
- now
#獲取當前日期 SELECT NOW();
- curdate
#獲取時間,沒有日期 SELECT CURTIME();
- year
- month
- monthname
- day
#獲取日期的指定部分 SELECT YEAR(NOW()); SELECT MONTH(NOW()); SELECT MONTHNAME(NOW()); SELECT DAY(NOW()); SELECT CONCAT(YEAR(NOW()),'年',MONTH(NOW()),'月',DAY(NOW()),'日') 日期;
- datediff
#判斷兩個日期的差別天數,前者比後者大,返回正數,小返回負數,相等返回0. SELECT DATEDIFF(NOW(),'2022-8-8'); SELECT DATEDIFF('2017-9-25',NOW());
4. 流程控制函式
常用的流程控制函式:
- if ...
SELECT IF(100>9,'不錯呦','不夠大') 備註;
- case when ...
#語法: #CASE #WHEN 條件1 THEN 顯示的值1 #WHEN 條件2 THEN 顯示的值2 #... #ELSE 顯示的值n #END #類似於: #IF(條件1){ # 語句1; #}ELSE IF(條件2){ #}ELSE{ # #} #案例: SELECT salary, CASE WHEN salary>20000 THEN '購買汽車' WHEN salary>10000 THEN '購買手機' WHEN salary>5000 THEN '購買pad' ELSE '購買棒棒糖' END 購買資格 FROM employees;
- case ... when ...
#語法: # #CASE 欄位或表示式 #WHEN 值1 THEN 顯示的值1 #WHEN 值2 THEN 顯示的值2 #... #ELSE 顯示的值n #END # #類似於: #switch(變數或表示式){ # # CASE 值1 :語句1;break; # ... # DEFAULT:語句n;break; # #} #案例:查詢部門和對應的級別 SELECT department_id, CASE department_id WHEN 10 THEN 'A' WHEN 20 THEN 'B' WHEN 30 THEN 'C' WHEN 50 THEN 'D' END 級別 FROM employees;