本文整理自《MySQL必知必會》第十、十一章,涵蓋字串拼接、去除空白、算術計算、文本/日期/聚合函數等實用技巧,助您直接在 SQL 層完成資料轉換,減少應用層處理。
CONCAT()建立計算欄位(不實際存在於資料表,僅在 SELECT 時產生)。
-- 供應商報表:名稱(所在地)
SELECT CONCAT(vend_name, '(', vend_country, ')') AS vend_title
FROM vendors;


LTRIM() - 去除左側空格RTRIM() - 去除右側空格TRIM() - 去除兩側空格-- 發票總價 = 單價 × 數量 SELECT prod_price * quantity AS total_price FROM orderitems;

| 函數 | 說明 |
|---|---|
UPPER()/LOWER() | 大小寫轉換 |
LEFT()/RIGHT() | 取左/右指定長度字元 |
LENGTH() | 字串長度 |
LOCATE() | 尋找子字串位置 |
SOUNDEX() | 語音匹配(按發音而非拼字比對) |
SELECT UPPER(vend_name) FROM vendors;


MySQL 日期格式:YYYY-MM-DD。DATETIME 型別含時間,直接比對日期會失敗,需用 DATE() 擷取日期部分。
| 函數 | 說明 |
|---|---|
NOW() | 目前日期時間 |
DATE() | 擷取日期部分 |
YEAR()/MONTH()/DAY() | 擷取年/月/日 |
DATEDIFF() | 計算兩日期差異天數 |
DATE_FORMAT() | 格式化輸出 |
-- 查詢 2005-09-01 的訂單 SELECT cust_id, order_num FROM orders WHERE DATE(order_date) = '2005-09-01'; -- 查詢 2005 年 9 月所有訂單 SELECT cust_id, order_num FROM orders WHERE YEAR(order_date) = 2005 AND MONTH(order_date) = 9;


| 函數 | 說明 |
|---|---|
AVG() | 平均值 |
COUNT() | 行數統計 |
MAX()/MIN() | 最大/最小值 |
SUM() | 加總 |
-- 平均價格 SELECT AVG(prod_price) AS avg_price FROM products; -- 計數:COUNT(*) 含 NULL,COUNT(column) 忽略 NULL SELECT COUNT(*) FROM products; SELECT COUNT(prod_price) FROM products; -- 加總 SELECT SUM(quantity * item_price) AS total_revenue FROM orderitems;




