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

MySQL 常用函數速查手冊:分類彙總與實戰注意事項(精簡版)

     編輯:MySQL 綜合教學

MySQL 常用函數速查手冊:分類彙總與實戰注意事項(精簡版)

本文為快速查閱版,詳細範例與進階用法請參考完整版(文章 172789)。

一、數學函數

函數用途
ABS(x)絕對值
CEIL/CEILING(x)向上取整
FLOOR(x)向下取整
ROUND(x, y)四捨五入保留 y 位
TRUNCATE(x, y)截斷保留 y 位(不四捨五入)
MOD(x, y)餘數
POW/POWER(x, y)冪運算
SQRT(x)平方根
RAND([seed])隨機數,種子固定序列可重現
SIGN(x)符號 -1/0/1
PI()圓周率
EXP(x)e^x
LN/LOG(x)自然對數
LOG(x, y)以 y 為底對數
GREATEST/LEAST多值最大/最小

二、聚合函數

函數說明
AVG(col)平均值
COUNT(col)非空計數;COUNT(*) 含空值
SUM(col)總和
MIN/MAX(col)極值
GROUP_CONCAT(col)分組串聯
STD/STDDEV(col)標準差

三、字串函數

函數說明
CONCAT / CONCAT_WS串聯 / 帶分隔符串聯
LENGTH / CHAR_LENGTH位元組長度 / 字元數
LEFT / RIGHT左/右 n 字元
SUBSTRING / MID擷取子字串
TRIM / LTRIM / RTRIM去空格
REPLACE替換
UPPER / LOWER大小寫轉換
FIND_IN_SET逗號列表查找位置
LOCATE / INSTR / POSITION子字串位置
REVERSE反轉
INSERT指定位置替換
REPEAT重複 n 次

四、日期時間函數

函數說明
NOW / CURDATE / CURTIME當前日期時間 / 日期 / 時間
DATE_ADD / DATE_SUB日期加減 INTERVAL
DATEDIFF日期差天數
DATE_FORMAT / TIME_FORMAT格式化輸出
UNIX_TIMESTAMP / FROM_UNIXTIME時間戳互轉
EXTRACT(unit FROM date)擷取年/月/日/時/分/秒等
DAYOFWEEK / MONTH / QUARTER / YEAR時間單位擷取
DAYNAME / MONTHNAME英文名稱
TO_DAYS / FROM_DAYS與公元元年天數互換
ADDDATE / SUBDATE / ADDTIME / SUBTIME日期時間加減別名
SEC_TO_TIME / TIME_TO_SEC秒數與時間互換

五、加密函數

函數說明
MD5(str)32 位雜湊,不可逆
SHA1/SHA2(str, 256|512)更安全雜湊
PASSWORD(str)MySQL 內部認證(版本相關)
AES_ENCRYPT/AES_DECRYPTAES 對稱加密,結果為二進位
ENCODE/DECODE舊式對稱加密(5.7+ 棄用)
ENCRYPT(str, salt)Unix crypt(僅前 8 字元有效)

六、控制流函數

函數說明
IF(cond, t, f)三元運算
IFNULL(v1, v2)v1 非空則 v1 否則 v2
NULLIF(v1, v2)相等則 NULL 否則 v1
CASE WHEN ... THEN ... ELSE ... END多條件分支
CASE expr WHEN ... THEN ... ELSE ... END值匹配分支

七、格式化函數

函數說明
FORMAT(x, n)數值千分位,保留 n 位小數
INET_ATON / INET_NTOAIPv4 與無號整數互轉
DATE_FORMAT / TIME_FORMAT日期時間格式化

八、型別轉換

函數支援型別
CAST(expr AS type)BINARY, CHAR, DATE, TIME, DATETIME, SIGNED, UNSIGNED
CONVERT(expr, type)同上
BINARY 'str'強制二進位比較(區分大小寫)

九、系統資訊

函數說明
VERSION()版本號
DATABASE()當前庫
USER() / CURRENT_USER()當前用戶
CONNECTION_ID()連線 ID
LAST_INSERT_ID()最後自增 ID
FOUND_ROWS()上一查詢總行數(配合 SQL_CALC_FOUND_ROWS)
BENCHMARK(n, expr)效能測試

實戰高頻注意點

  1. CHAR_LENGTH vs LENGTH:中文 UTF-8 下前者計字元,後者計位元組,分頁/截取必須用 CHAR_LENGTH。
  2. ROUND vs TRUNCATE:金融計算嚴禁 ROUND,必須用 TRUNCATE 或應用層 BigDecimal。
  3. DATE_FORMAT 格式字元:%Y(四位年) %m(兩位月) %d(兩位日) %H(24時) %i(分) %s(秒) %r(12時含 AM/PM)。
  4. IFNULL/COALESCE:多參數用 COALESCE(v1,v2,v3...),標準 SQL 支援更好。
  5. CASE 表達式 vs 語句:SELECT 中用表達式(返回值);存儲過程中可用語句(控制流程)。
  6. 索引與函數:WHERE 子句中對列使用函數會導致索引失效(如 WHERE DATE(create_time) = '2023-01-01'),改用範圍查詢。
  7. 時區一致性:應用層、連線、伺服器時區統一用 UTC,存儲 TIMESTAMP 或 DATETIME(UTC)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved