MySQL 常用函式

不該相遇在秋天發表於2018-10-25

一、序言

本人部落格並非教材,只會以自己的方式記一些自己覺得有必要記錄的東西,請勿介意。

比如本篇內容,我就覺得簡潔的表格比詳細的使用示例更好。

二、字串函式

函式 功能
CONCAT(str1,str2,.....) 字串連線,連線目標個數不限
INSERT(str,x,y,instr) 將字串str從第x位置開始,y個字元長的子串替換為字串instr  
LOWER(str) 轉小寫
UPPER(str) 轉大寫
LEFT(str,x) 返回字串str最左邊的x個字元
RIGHT(str,x) 返回字串str最右邊的x個字元
LPAD(str,n,pad) 用字串pad對str最左邊進行填充,直到長度為n個字元長度
RPAD(str,n,pad) 用字串pad對str最右邊進行填充,直到長度為n個字元長度
LTRIM(str) 去除字串str左邊的空格
RTRIM(str) 去除字串str右邊的空格
TRIM(str) 去除字串兩邊的空格
REPEAT(str,x) 返回str重複x次的結果
REPLACE(str,a,b) 把字串str中所有的a替換成b
STRCMP(str1,str2) 比較兩個字串,大於為1 小於為-1 等於為0
SUBSTRING(str,x,y) 返回str字串從x開始y個長度的字串

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

三、數值函式

函式 功能
ABS(x) 返回x的絕對值
CEIL(x) 返回大於x的最小整數值
FLOOR(x) 返回小於x的最大整數值
MOD(x,y) 返回x/y的模
RAND() 返回0-1之間的隨機數
ROUND(x,y) 返回x的四捨五入保留y位小數的結果
TRUNCATE(x,y) 返回數字x截斷為y位小數的結果

 

 

 

 

 

 

 

 

 

 

四、時間日期函式

函式 功能
NOW() 返回當前日期和時間
CURDATE() 返回當前日期
CURTIME() 返回當前時間
UNIX_TIMESTAMP(date) 返回date的時間戳
FROM_UNIXTIME(time) 返回時間戳的date值
WEEK(date) 返回日期date為一年中的第幾周
YEAR(date) 返回日期date的年份
HOUR(time) 返回time的小時值
MINUTE(time) 返回time的分鐘值
MONTHNAME(date) 返回date的月份名稱 英文名
DATE_FORMAT(date,fmt) 返回按字串fmt格式化日期date值
DATEDIFF(expr,expr2) 返回起始時間和結束時間之間的天數

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

這個函式 DATE_FORMAT(date,fmt)  其中的fmt 可以使用的格式符如下表

格式符 格式說明
%S和%s 兩位數字形式的秒
%i 兩位數字形式的分
%H 兩位數字形式的小時 24小時制
%h和%I 兩位數字形式的小時 12小時制
%T 24小時的時間形式 14:19:41
%d 兩位數字表示天
%m 兩位數字表示的月份
%Y 四位數字表示的年份
%y 兩位數字表示的年份

 

 

 

 

 

 

 

 

 

 

 

-- 格式化當前時間
SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s')
-- 2018-10-25 14:26:01
-- 現在到過年還有多少天
SELECT DATEDIFF('2019-02-05',NOW())
-- 103

五、流程函式

函式 功能
IF(value,a,b) 如果value是真,那麼返回a,否則返回b
IFNULL(value1,value2) 如果value1是null,那麼返回value2,否則返回value1本身
CASE WHEN [value] THEN [result1] ... ELSE [default_value] END 如果value是真,返回result1,【可以跟上多個WHEN-THEN匹配】否則返回default_value
CASE [value] WHEN [a1] THEN [result1] ... ELSE [default_value] END 匹配value的值,如果等於a1,那麼返回result1,也可以跟上多個匹配,否則default_value

 

 

 

 

 

 

 

示例兩種case用法:

SELECT CASE 10 WHEN 9 THEN "這是9" WHEN 10 THEN "這是10" ELSE "全錯" END
-- 這是10
SELECT CASE WHEN 10>12 THEN "10>12對" WHEN 10>9 THEN "10>9對" ELSE "全錯" END 
-- 10>9對

六、其他函式

函式 功能
DATABASE() 返回當前資料庫名
VERSION() 返回當前資料庫版本
USER() 返回當前登入使用者名稱
INET_ATON(ip) 返回IP地址的數字表示
INET_NTOA(num) 返回數字代表的Ip地址
PASSWORD(str) 返回字串str的加密版本
MD5(str) 返回字串的MD5值

相關文章