萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 常用函數大全:字串、日期、數值處理速查表

一、字串處理函數

函數說明範例
CONCAT(str1,str2,...)串接字串CONCAT('My','SQL') → 'MySQL'
LENGTH(str)位元組長度LENGTH('中文') → 6 (UTF8)
CHAR_LENGTH(str)字元長度CHAR_LENGTH('中文') → 2
LOWER/UPPER(str)大小寫轉換
TRIM([BOTH|LEADING|TRAILING] rem FROM str)去除首尾空格或指定字元
LEFT(str, len) / RIGHT(str, len)取左/右指定長度
SUBSTRING(str, pos, len)截取子串
LOCATE(substr, str)尋找子串位置
REPLACE(str, from, to)替換字串
SOUNDEX(str)發音編碼(英文名模糊匹配)SOUNDEX('Lee') = SOUNDEX('Lie')

二、日期時間函數

函數說明
NOW() / CURRENT_TIMESTAMP目前日期時間
CURDATE() / CURRENT_DATE目前日期
CURTIME() / CURRENT_TIME目前時間
DATE(expr)擷取日期部份
TIME(expr)擷取時間部份
YEAR/MONTH/DAY/HOUR/MINUTE/SECOND(date)擷取對應部份
DATE_ADD(date, INTERVAL expr unit)日期加法
DATE_SUB(date, INTERVAL expr unit)日期減法
DATEDIFF(date1, date2)兩日期相差天數
DATE_FORMAT(date, format)格式化輸出
STR_TO_DATE(str, format)字串解析為日期
DAYOFWEEK(date)星期索引 (1=Sun)
WEEKDAY(date)星期索引 (0=Mon)
QUARTER(date)季度 (1-4)

常見查詢模式

-- 某一天的資料(正確)
SELECT * FROM orders WHERE DATE(order_date) = '2024-01-15';
-- 或使用範圍查詢利用索引
SELECT * FROM orders
WHERE order_date >= '2024-01-15' AND order_date < '2024-01-16';

-- 某個月的資料
SELECT * FROM orders
WHERE order_date >= '2024-01-01' AND order_date < '2024-02-01';
-- 或
SELECT * FROM orders WHERE YEAR(order_date)=2024 AND MONTH(order_date)=1;

三、數值處理函數

函數說明
ABS(x)絕對值
CEIL(x) / FLOOR(x)向上/向下取整
ROUND(x, d)四捨五入保留 d 位小數
MOD(n, m)取餘
POW(x, y) / POWER(x, y)冪運算
SQRT(x)平方根
RAND()隨機數 0-1
SIN/COS/TAN(x)三角函數(弧度)
PI()圓周率
EXP(x)e^x
LOG(x) / LOG10(x)自然/常用對數

提醒

函數在 WHERE 條件欄位上使用會導致索引失效,盡量改寫為範圍查詢或使用函數索引(MySQL 8.0+ 支援)。

copyright © 萬盛學電腦網 all rights reserved