| 函數 | 說明 | 示例 |
|---|---|---|
| CONCAT(s1,s2...) | 拼接字符串,任一參數為 NULL 結果為 NULL | `CONCAT('My','SQL') → 'MySQL'` |
| CONCAT_WS(sep,s1,s2...) | 帶分隔符拼接,忽略 NULL | `CONCAT_WS(',','a',NULL,'b') → 'a,b'` |
| LENGTH(str) | 字節長度 | `LENGTH('中文') → 6 (utf8mb4)` |
| CHAR_LENGTH(str) | 字符長度 | `CHAR_LENGTH('中文') → 2` |
| SUBSTRING(str,pos,len) | 截取子串 (1-based) | `SUBSTRING('abcdef',2,3) → 'bcd'` |
| SUBSTRING_INDEX(str,delim,count) | 按分隔符截取 (count>0 左側, <0 右側) | `SUBSTRING_INDEX('a.b.c','.',2) → 'a.b'` |
| LOCATE(substr,str,[pos]) | 查找子串位置 (1-based, 未找到 0) | `LOCATE('bar','foobar') → 4` |
| INSTR(str,substr) | 同 LOCATE 參數順序相反 | `INSTR('foobar','bar') → 4` |
| REPLACE(str,from,to) | 替換所有匹配 | `REPLACE('www.mysql.com','w','Ww') → 'WwWwWw.mysql.com'` |
| TRIM([BOTH|LEADING|TRAILING] [remstr] FROM str) | 去除首尾/首/尾指定字符 (默認空格) | `TRIM(' abc ') → 'abc'` |
| LTRIM/RTRIM(str) | 去除左/右空格 | |
| UPPER/UCASE(str) | 轉大寫 | `UPPER('abc') → 'ABC'` |
| LOWER/LCASE(str) | 轉小寫 | |
| LPAD/RPAD(str,len,padstr) | 左/右填充至指定長度 | `LPAD('1',5,'0') → '00001'` |
| REPEAT(str,count) | 重複字符串 | `REPEAT('a',3) → 'aaa'` |
| REVERSE(str) | 反轉字符串 | `REVERSE('abc') → 'cba'` |
| INSERT(str,pos,len,newstr) | 替換指定位置長度子串 | `INSERT('Quadratic',3,4,'What') → 'QuWhattic'` |
| ELT(N,str1,str2...) | 返回第 N 個字符串 (1-based) | `ELT(2,'a','b','c') → 'b'` |
| FIELD(str,str1,str2...) | 返回 str 在列表中索引 (1-based, 未找到 0) | `FIELD('b','a','b','c') → 2` |
| FIND_IN_SET(str,strlist) | 查找字符串在逗號分隔列表中位置 (SET 類型優化) | `FIND_IN_SET('b','a,b,c') → 2` |
| MAKE_SET(bits,str1,str2...) | 按位組合字符串集合 | `MAKE_SET(1|4,'a','b','c') → 'a,c'` |
| EXPORT_SET(bits,on,off,sep,nbits) | 按位生成 on/off 字符串 | `EXPORT_SET(5,'Y','N',',',4) → 'Y,N,Y,N'` |
| ASCII(str) | 首字符 ASCII 碼 | `ASCII('A') → 65` |
| ORD(str) | 首字符多字節編碼值 | |
| CHAR(N...) | ASCII 碼轉字符串 | `CHAR(77,121,83,81,76) → 'MySQL'` |
| HEX(str/N) | 轉十六進制 | `HEX('MySQL') → '4D7953514C'` |
| UNHEX(str) | 十六進制轉二進制 | `UNHEX('4D7953514C') → 'MySQL'` |
| QUOTE(str) | 生成可用於 SQL 的帶引號字符串 | `QUOTE("Don't!") → "'Don\\'t!'"` |
| 函數 | 說明 | 示例 |
|---|---|---|
| NOW() / SYSDATE() / CURRENT_TIMESTAMP | 當前日期時間 (YYYY-MM-DD HH:MM:SS) | `NOW() → '2023-10-01 12:00:00'` |
| CURDATE() / CURRENT_DATE | 當前日期 | `CURDATE() → '2023-10-01'` |
| CURTIME() / CURRENT_TIME | 當前時間 | `CURTIME() → '12:00:00'` |
| DATE(expr) | 提取日期部分 | `DATE(NOW()) → '2023-10-01'` |
| TIME(expr) | 提取時間部分 | `TIME(NOW()) → '12:00:00'` |
| YEAR/MONTH/DAY/HOUR/MINUTE/SECOND(date) | 提取對應部分 | `MONTH('2023-10-01') → 10` |
| DAYOFWEEK(date) | 星期索引 (1=周日...7=周六) | |
| WEEKDAY(date) | 星期索引 (0=周一...6=周日) | |
| DAYOFMONTH/DAY(date) | 月內天數 (1-31) | |
| DAYOFYEAR(date) | 年內天數 (1-366) | |
| WEEK(date,[mode]) | 年內週數 (mode 控制起始日) | |
| QUARTER(date) | 季度 (1-4) | |
| MONTHNAME/DAYNAME(date) | 月份/星期英文名 | `MONTHNAME(NOW()) → 'October'` |
| DATE_FORMAT(date,format) | 格式化日期 (靈活、常用) | `DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s')` |
| TIME_FORMAT(time,format) | 格式化時間 | |
| STR_TO_DATE(str,format) | 字符串解析為日期 (反向操作) | `STR_TO_DATE('01/10/2023','%d/%m/%Y')` |
| DATE_ADD(date,INTERVAL expr unit) | 日期加法 | `DATE_ADD(NOW(),INTERVAL 1 DAY)` |
| DATE_SUB(date,INTERVAL expr unit) | 日期減法 | `DATE_SUB(NOW(),INTERVAL 1 HOUR)` |
| ADDDATE/SUBDATE(date,INTERVAL...) | DATE_ADD/SUB 別名 | |
| DATEDIFF(date1,date2) | 日期差 (天數) | `DATEDIFF('2023-10-02','2023-10-01') → 1` |
| TIMEDIFF(time1,time2) | 時間差 (TIME 類型) | |
| TIMESTAMPDIFF(unit,datetime1,datetime2) | 精確差值 (支持 MICROSECOND 等) | `TIMESTAMPDIFF(SECOND, t1, t2)` |
| FROM_UNIXTIME(unix_ts,[format]) | Unix 時間戳轉日期時間 | `FROM_UNIXTIME(1696118400) → '2023-10-01 12:00:00'` |
| UNIX_TIMESTAMP([date]) | 日期轉 Unix 時間戳 (秒) | `UNIX_TIMESTAMP() → 1696118400` |
| SEC_TO_TIME(seconds) | 秒數轉 TIME (HH:MM:SS) | `SEC_TO_TIME(3661) → '01:01:01'` |
| TIME_TO_SEC(time) | TIME 轉總秒數 | `TIME_TO_SEC('01:01:01') → 3661` |
| LAST_DAY(date) | 該月最後一天日期 | |
| MAKEDATE(year,dayofyear) | 年+年內天數 生成日期 | |
| MAKETIME(hour,minute,second) | 生成時間 | |
| PERIOD_ADD(P,N) / PERIOD_DIFF(P1,P2) | 年月期間加減 (格式 YYYYMM) | `PERIOD_ADD(202310,2) → 202312` |
%Y 4位年 %y 2位年 %m 月(01-12) %c 月(1-12) %b 縮寫月名
%d 日(01-31) %e 日(1-31) %j 年內天(001-366)
%H 時(00-23) %k 時(0-23) %h/%I 時(01-12) %l 時(1-12)
%i 分(00-59) %S/%s 秒(00-59)
%r 12小時時間(hh:mm:ss AM/PM) %T 24小時時間(hh:mm:ss)
%W 星期全名 %a 縮寫星期 %w 星期(0=周日-6=周六)
%U 週(00-53,周日首) %u 週(00-53,周一首)
%% 字面 %
| 函數 | 說明 |
|---|---|
| ABS(x) | 絕對值 |
| CEIL/CEILING(x) | 向上取整 |
| FLOOR(x) | 向下取整 |
| ROUND(x,[d]) | 四捨五入 (d 位小數) |
| TRUNCATE(x,d) | 截斷到 d 位小數 (不四捨五入) |
| MOD(x,y) / x % y | 取模 |
| POW/POWER(x,y) | 冪運算 |
| SQRT(x) | 平方根 |
| RAND([seed]) | 隨機數 (0-1),seed 固定可復現 |
| SIGN(x) | 符號 (-1/0/1) |
| CONV(N,from_base,to_base) | 進制轉換 (2-36) |
| 函數 | 說明 |
|---|---|
| MD5(str) | MD5 雜湊 (32 字符十六進制) |
| SHA1(str) / SHA(str) | SHA-1 雜湊 (40 字符) |
| SHA2(str,hash_len) | SHA-2 族 (224/256/384/512) |
| PASSWORD(str) | MySQL 密碼雜湊 (版本相關,**不可用於應用**) |
| ENCRYPT(str,[salt]) | Unix crypt() 加密 (舊) |
| AES_ENCRYPT(str,key) / AES_DECRYPT(crypt,key) | AES 加解密 (默認 128 位 ECB,**不安全模式**) |
| DES_ENCRYPT/DECRYPT | DES 加解密 (已棄用) |
| COMPRESS(str) / UNCOMPRESS(str) | zlib 壓縮/解壓 (返回 BLOB) |
| UNCOMPRESSED_LENGTH(str) | 壓縮前長度 |
| 函數 | 說明 |
|---|---|
| VERSION() | 服務器版本 |
| CONNECTION_ID() | 當前連接 ID |
| DATABASE() / SCHEMA() | 當前默認數據庫 |
| USER() / CURRENT_USER() | 當前認證用戶 / 當前有效用戶 |
| LAST_INSERT_ID() | 上次 AUTO_INCREMENT 生成值 (會話隔離) |
| ROW_COUNT() | 上條語句影響行數 |
| FOUND_ROWS() | 帶 SQL_CALC_FOUND_ROWS 查詢的總行數 |
| BENCHMARK(count,expr) | 性能測試 (重複執行 expr) |
| INET_ATON(ip) / INET_NTOA(num) | IP 地址與整數互轉 |
| UUID() | 生成 UUID (標準格式) |
| UUID_SHORT() | 生成 64 位短 UUID (需 server_id 配置) |
| 函數 | 說明 |
|---|---|
| IF(expr, true_val, false_val) | 三元運算 |
| IFNULL(expr1, expr2) | expr1 非 NULL 返回 expr1,否則 expr2 |
| COALESCE(v1,v2,...) | 返回第一個非 NULL 值 |
| NULLIF(expr1, expr2) | 相等返回 NULL,否則 expr1 |
| CASE WHEN cond THEN val ... ELSE val END | 多分支 (表達式/搜索式) |
| GREATEST/LEAST(v1,v2...) | 最大/最小值 (任一 NULL 結果 NULL) |
JSON_EXTRACT(doc, path) / -> -- 提取值 (帶引號)
JSON_UNQUOTE(JSON_EXTRACT(...)) / ->> -- 提取純值
JSON_SET(doc, path, val) -- 修改/插入
JSON_REMOVE(doc, path) -- 刪除
JSON_ARRAY()/JSON_OBJECT() -- 構造
JSON_CONTAINS/JSON_SEARCH -- 查詢
JSON_TABLE() (8.0) -- JSON 轉關係表
COUNT(*) / COUNT(col) / COUNT(DISTINCT col)
SUM/AVG/MIN/MAX(col)
GROUP_CONCAT(col SEPARATOR ',') -- 分組拼接 (受 group_concat_max_len 限制)
STDDEV/STDDEV_POP/VARIANCE -- 統計