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

SQL 內建函數分類速查:聚合函數與標量函數核心清單

     編輯:MySQL 綜合教學

聚合函數

對一組值計算並返回單一值,常配合 GROUP BY 使用。

函數說明示例
AVG(expr)平均值SELECT AVG(salary) FROM employees;
COUNT(expr)非 NULL 行數SELECT COUNT(*) FROM orders;
MAX(expr)最大值SELECT MAX(price) FROM products;
MIN(expr)最小值SELECT MIN(age) FROM users;
SUM(expr)總和SELECT SUM(amount) FROM payments;
GROUP_CONCAT(expr)分組拼接字符串 (MySQL 特有)SELECT GROUP_CONCAT(name) FROM users GROUP BY dept;

注意:FIRST()、LAST() 非標準 SQL,MySQL 不支持;請用 ORDER BY ... LIMIT 1 替代。

標量函數

針對單個值操作,返回單個值,可用於 SELECT、WHERE、ORDER BY 等子句。

字符串函數

函數說明
UPPER(str) / UCASE(str)轉大寫
LOWER(str) / LCASE(str)轉小寫
SUBSTRING(str, pos, len) / MID(str, pos, len)截取子串
LENGTH(str) / CHAR_LENGTH(str)字節長度 / 字符長度
TRIM([BOTH|LEADING|TRAILING] remstr FROM str)去除首尾空格或指定字符
REPLACE(str, from_str, to_str)替換子串
CONCAT(str1, str2, ...)拼接字符串
LEFT(str, len) / RIGHT(str, len)左/右側定長截取

數值函數

函數說明
ROUND(num, decimals)四捨五入保留小數位
CEIL(num) / CEILING(num)向上取整
FLOOR(num)向下取整
ABS(num)絕對值
MOD(n, m) / n % m取模
RAND([seed])隨機數 (0~1)

日期時間函數

函數說明
NOW() / CURRENT_TIMESTAMP()當前日期時間
CURDATE() / CURRENT_DATE()當前日期
CURTIME() / CURRENT_TIME()當前時間
DATE_ADD(date, INTERVAL expr unit)日期加減間隔
DATEDIFF(date1, date2)兩日期相差天數
DATE_FORMAT(date, format)日期格式化輸出
STR_TO_DATE(str, format)字符串解析為日期
UNIX_TIMESTAMP([date])日期轉 Unix 時間戳
FROM_UNIXTIME(ts)時間戳轉日期

流程控制函數

函數說明
IF(condition, true_val, false_val)條件判斷
CASE WHEN cond1 THEN val1 ... ELSE valN END多條件分支
COALESCE(val1, val2, ...)返回第一個非 NULL 值
NULLIF(expr1, expr2)相等返回 NULL,否則返回 expr1

使用建議

  • 可移植性:優先使用 ANSI SQL 標準函數 (UPPER、SUBSTRING、COALESCE),減少遷移成本。
  • 性能:WHERE 子句中對列使用函數會導致索引失效,改寫為 col = UPPER('val') 或使用函數索引 (MySQL 8.0+ 支持)。
  • 時區:NOW() 受會話時區影響,跨時區應用建議存儲 UTC 時間戳 (BIGINT) 或使用 TIMESTAMP 類型。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved