
文章目錄
- 📑前言
- 一. MySQL函數概論
- 二. 字符串函數
- 三. 數值函數
- 四. 日期函數
- 五. 流程函數
- 🌤?全篇總結

📑前言
MySQL中的函數是一種強大的工具,可以幫助我們在數據庫中快速處理數據,完成各種業務需求。本文將深入介紹MySQL中的字符串函數、數值函數、日期函數和流程函數,通過實例演示和詳細解釋,幫助讀者掌握這些函數的使用方法,從而提高數據庫操作的效率和靈活性。
一. MySQL函數概論
函數 是指一段可以直接被另一段程序調用的程序或代碼。 也就意味著,這一段程序或代碼在MySQL中已經給我們提供了,我們要做的就是在合適的業務場景調用對應的函數完成對應的業務需求即可。 那么,函數到底在哪兒使用呢?
- 在企業的OA或其他的人力系統中,經常會提供的有這樣一個功能,每一個員工登錄上來之后都能夠看到當前員工入職的天數。 而在數據庫中,存儲的都是入職日期,如 2000-11-12,那如果快速計算出天數呢?
- 在做報表這類的業務需求中,我們要展示出學員的分數等級分布。而在數據庫中,存儲的是學生的分數值,如98/75,如何快速判定分數的等級呢?
其實,上述的這一類的需求呢,我們通過MySQL中的函數都可以很方便的實現 。
MySQL中的函數主要分為以下四類: 字符串函數、數值函數、日期函數、流程函數。
二. 字符串函數
MySQL中內置了很多字符串函數,常用的幾個如下:
函數 | 功能 |
---|---|
CONCAT(S1,S2,…Sn) | 字符串拼接,將S1,S2,… Sn拼接成一個字符串 |
LOWER(str) | 將字符串str全部轉為小寫 |
UPPER(str) | 將字符串str全部轉為大寫 |
LPAD(str,n,pad) | 左填充,用字符串pad對str的左邊進行填充,達到n個字符 串長度 |
RPAD(str,n,pad) | 右填充,用字符串pad對str的右邊進行填充,達到n個字符 串長度 |
TRIM(str) | 去掉字符串頭部和尾部的空格 |
SUBSTRING(str,start,len) | 返回從字符串str從start位置起的len個長度的字符串 |
演示如下:
A. concat : 字符串拼接
select concat('Hello' , ' MySQL');
B. lower : 全部轉小寫
select lower('Hello');
C. upper : 全部轉大寫
select upper('Hello');
D. lpad : 左填充
select lpad('01', 5, '-');
E. rpad : 右填充
select rpad('01', 5, '-');
F. trim : 去除空格
select trim(' Hello MySQL ');
G. substring : 截取子字符串
select substring('Hello MySQL',1,5);
三. 數值函數
常見的數值函數如下:
函數 | 功能 |
---|---|
CEIL(x) | 向上取整 |
FLOOR(x) | 向下取整 |
MOD(x,y) | 返回x/y的模 |
RAND() | 返回0~1內的隨機數 |
ROUND(x,y) | 求參數x的四舍五入的值,保留y位小數 |
演示如下:
A. ceil:向上取整
select ceil(1.1);
B. floor:向下取整
select floor(1.9);
C. mod:取模
select mod(7,4);
D. rand:獲取隨機數
select rand();
E. round:四舍五入
select round(2.344,2);
四. 日期函數
常見的日期函數如下:
函數 | 功能 |
---|---|
CURDATE() | 返回當前日期 |
CURTIME() | 返回當前時間 |
NOW() | 返回當前日期和時間 |
YEAR(date) | 獲取指定date的年份 |
MONTH(date) | 獲取指定date的月份 |
DAY(date) | 獲取指定date的日期 |
DATE_ADD(date, INTERVAL expr type) | 返回一個日期/時間值加上一個時間間隔expr后的 時間值 |
DATEDIFF(date1,date2) | 返回起始時間date1 和 結束時間date2之間的天 數 |
演示如下:
A. curdate:當前日期
select curdate();
B. curtime:當前時間
select curtime();
C. now:當前日期和時間
select now();
D. YEAR , MONTH , DAY:當前年、月、日
select YEAR(now());
select MONTH(now());
select DAY(now());
E. date_add:增加指定的時間間隔
select date_add(now(), INTERVAL 70 YEAR );
F. datediff:獲取兩個日期相差的天數
select datediff('2021-10-01', '2021-12-01');
五. 流程函數
流程函數也是很常用的一類函數,可以在SQL語句中實現條件篩選,從而提高語句的效率。
函數 | 功能 |
---|---|
IF(value , t , f) | 如果value為true,則返回t,否則返回 f |
IFNULL(value1 , value2) | 如果value1不為空,返回value1,否則 返回value2 |
CASE WHEN [ val1 ] THEN [res1] … ELSE [ default ] END | 如果val1為true,返回res1,… 否 則返回default默認值 |
CASE [ expr ] WHEN [ val1 ] THEN [res1] … ELSE [ default ] END | 如果expr的值等于val1,返回 res1,… 否則返回default默認值 |
演示如下:
A. if
select if(false, 'Ok', 'Error');
B. ifnull
select ifnull('Ok','Default');
select ifnull('','Default');
select ifnull(null,'Default');
C. case when then else end
需求: 查詢emp表的員工姓名和工作地址 (北京/上海 ----> 一線城市 , 其他 ----> 二線城市)
selectname,( case workaddress when '北京' then '一線城市' when '上海' then '一線城市' else'二線城市' end ) as '工作地址'
from emp;
🌤?全篇總結
本文詳細介紹了MySQL中常用的字符串函數、數值函數、日期函數和流程函數,包括各種函數的功能、語法和實際應用。通過學習本文,讀者可以掌握在實際業務場景中如何靈活運用這些函數,從而更高效地處理數據庫中的數據,滿足各種業務需求。