首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 內置函數速查手冊:字符串、數值、日期、流程控制與實用工具函數

     編輯:MySQL 綜合教學

前言

MySQL 提供豐富的內置函數,可直接在 SELECT、WHERE、ORDER BY、HAVING、UPDATE、DELETE 中使用。本文按類別整理高頻函數,附帶語法、參數說明與實戰示例,適合開發與運維隨時查閱。

一、字符串函數

函數語法與說明示例
拼接CONCAT(s1,s2,...,sn) 任一參數為 NULL 則結果為 NULLSELECT CONCAT('abc','def'); -- abcdef
替換指定區間INSERT(str, pos, len, newstr) 從 pos 起 len 字符替換為 newstrSELECT INSERT('abcdef',2,3,'123'); -- a123ef
大小寫轉換LOWER(str) / UPPER(str)SELECT LOWER('HELLO'), UPPER('hello');
左右截取LEFT(str,n) / RIGHT(str,n) n≤0 返回空串SELECT LEFT('123456',3), RIGHT('123456',3); -- 123, 456
填充LPAD(str,len,pad) / RPAD(str,len,pad) 不足 len 則填充SELECT LPAD('hi',5,'#'), RPAD('hi',5,'@'); -- ###hi, hi@@@
去空格TRIM(str) / LTRIM(str) / RTRIM(str)SELECT CONCAT('#',TRIM(' abc '),'#'); -- #abc#
全量替換REPLACE(str, from_str, to_str)SELECT REPLACE('abcabc','ab','XY'); -- XYcXYc
比較STRCMP(s1,s2) 返回 -1/0/1SELECT STRCMP('aa','bb'); -- -1
子串SUBSTRING(str, pos, len) 位置從 1 開始SELECT SUBSTRING('abcdef',2,3); -- bcd

二、數值函數

函數說明示例
ABS(x)絕對值SELECT ABS(-10); -- 10
CEIL(x) / CEILING(x)向上取整(≥x 的最小整數)SELECT CEIL(2.1); -- 3
FLOOR(x)向下取整(≤x 的最大整數)SELECT FLOOR(2.9); -- 2
MOD(x,y)取模,等同 x % ySELECT MOD(10,3); -- 1
RAND()0~1 隨機浮點數SELECT FLOOR(RAND()*100); -- 0~99 整數
ROUND(n,d)四捨五入保留 d 位小數SELECT ROUND(1.456,2); -- 1.46
TRUNCATE(n,d)直接截斷保留 d 位(不四捨五入)SELECT TRUNCATE(1.235,2); -- 1.23

三、日期時間函數

函數說明示例
CURDATE()當前日期SELECT CURDATE(); -- 2024-05-20
CURTIME()當前時間SELECT CURTIME(); -- 14:30:00
NOW()當前日期時間SELECT NOW(); -- 2024-05-20 14:30:00
UNIX_TIMESTAMP(dt)日期時間轉 Unix 時間戳(秒)SELECT UNIX_TIMESTAMP('2024-05-20 14:30:00');
FROM_UNIXTIME(ts)時間戳轉日期時間字串SELECT FROM_UNIXTIME(1716263400);
YEAR/MONTH/DAY/HOUR/MINUTE/SECOND(dt)提取對應部分SELECT MONTH(NOW());
WEEK(dt)年中的週數SELECT WEEK(NOW());
MONTHNAME(dt)月份英文名SELECT MONTHNAME(NOW()); -- May
DATE_FORMAT(dt, fmt)自定義格式化,常用佔位符:
%Y年 %m月 %d日 %H時 %i分 %s秒
SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s');

四、流程控制函數

函數語法示例
IFIF(expr, true_val, false_val)SELECT IF(score>60,'Pass','Fail') FROM exam;
IFNULLIFNULL(expr1, expr2) expr1 非 NULL 返回 expr1 否則 expr2SELECT IFNULL(bonus,0) FROM salary;
CASECASE WHEN cond1 THEN v1 ... ELSE v_def ENDSELECT CASE WHEN age<18 THEN 'Child' ELSE 'Adult' END FROM users;

五、其他實用函數

函數說明示例
DATABASE()當前默認數據庫SELECT DATABASE();
VERSION()服務器版本SELECT VERSION();
USER()當前登錄用戶SELECT USER();
INET_ATON(ip)IPv4 轉無符號整數SELECT INET_ATON('192.168.1.1'); -- 3232235777
INET_NTOA(num)整數轉 IPv4 字串SELECT INET_NTOA(3232235777); -- 192.168.1.1
PASSWORD(str)MySQL 內部認證加密(僅供系統用戶,5.7+ 已移除)SELECT PASSWORD('123');
MD5(str)應用層常用摘要SELECT MD5('123456');

六、查詢函數幫助的小技巧

mysql> ? substring
mysql> HELP 'date_format'

直接在客戶端輸入 ? 函數名 即可閱讀官方手冊片段。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved