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

MySQL 內建數據處理函數大全:文本、日期時間、數值三大類詳解與實例

     編輯:MySQL 綜合教學

MySQL 內建數據處理函數大全:文本、日期時間、數值三大類詳解與實例

在資料庫層面完成數據清洗、格式轉換、計算比在應用層處理更高效,且減少網路傳輸。MySQL 提供豐富的標量函數,分為文本、日期時間、數值三大類。使用專有函數會降低 SQL 可移植性,跨庫遷移時需注意。

一、文本處理函數

函數說明
UPPER(str) / UCASE(str)轉大寫
LOWER(str) / LCASE(str)轉小寫
LTRIM(str)去除左側空格
RTRIM(str)去除右側空格
TRIM([BOTH|LEADING|TRAILING] [remstr] FROM str)去除首尾指定字符(默認空格)
LEFT(str, len)取左側 len 字符
RIGHT(str, len)取右側 len 字符
SUBSTRING(str, pos[, len]) / MID(str, pos, len)截取子串
LENGTH(str)返回字節長度
CHAR_LENGTH(str)返回字符數
LOCATE(substr, str[, start])查找子串位置(1-based)
REPLACE(str, from, to)替換所有匹配子串
CONCAT(str1, str2, ...)拼接字符串(任一為 NULL 結果為 NULL)
CONCAT_WS(sep, str1, str2, ...)帶分隔符拼接,自動跳過 NULL
SOUNDEX(str)返回發音編碼,用於模糊音匹配

實例:大小寫轉換

SELECT UPPER(prod_name) AS upper_name FROM products;

大寫轉換結果

實例:SOUNDEX 解決拼寫錯誤查詢

真名 Y.Lee 存為 Y.Lie,LIKE 無法匹配,用 SOUNDEX:

SELECT * FROM contacts WHERE SOUNDEX(contact_name) = SOUNDEX('Y.Lee');

SOUNDEX 匹配

二、日期時間處理函數

函數說明
NOW() / SYSDATE()當前日期時間
CURDATE() / CURRENT_DATE()當前日期
CURTIME() / CURRENT_TIME()當前時間
DATE(expr)提取日期部分
TIME(expr)提取時間部分
YEAR(date) / MONTH(date) / DAY(date)提取年/月/日
HOUR(time) / MINUTE(time) / SECOND(time)提取時/分/秒
DATE_ADD(date, INTERVAL expr unit)日期加減(靈活單位:DAY, MONTH, YEAR, HOUR...)
DATE_SUB(date, INTERVAL expr unit)日期減法
DATEDIFF(date1, date2)兩日期相差天數
DATE_FORMAT(date, format)按格式字符串輸出日期
DAYOFWEEK(date)星期幾(1=Sunday)

實例:忽略時間部分比較日期

SELECT * FROM orders WHERE DATE(order_date) = '2023-08-15';

日期比較

實例:查詢最近 30 天訂單(不計算具體天數)

SELECT * FROM orders WHERE order_date >= DATE_SUB(CURDATE(), INTERVAL 30 DAY);

相對日期查詢

三、數值處理函數

函數說明
ABS(x)絕對值
CEIL(x) / CEILING(x)向上取整
FLOOR(x)向下取整
ROUND(x[, d])四捨五入保留 d 位小數
MOD(x, y) / x % y取模(餘數)
POW(x, y) / POWER(x, y)冪運算
SQRT(x)平方根
RAND([seed])隨機數(0-1)
SIN(x) / COS(x) / TAN(x)三角函數(弧度制)
PI()圓周率
EXP(x)e 的 x 次方
LOG(x) / LN(x)自然對數
LOG10(x)以 10 為底對數

實例:正切計算

SELECT TAN(PI()/4); -- 返回 1

正切示例

移植性提示

  • 標準 SQL 僅定義少數函數(如 UPPER、LOWER、SUBSTRING、CURRENT_DATE),盡量優先使用標準寫法。
  • 跨庫項目建議在 DAL 層封裝函數調用,或使用 ORM 內建方言適配。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved