MySQL 字符串截取與大小寫轉換函數速查
1. LEFT(str, len) — 從左截取
SELECT LEFT(content, 50) AS summary FROM article;
-- 取前 50 字符(漢字按 1 字符計)
2. RIGHT(str, len) — 從右截取
SELECT RIGHT(content, 50) AS tail FROM article;
3. UPPER(str) / LOWER(str) — 大小寫轉換
SELECT UPPER(title) FROM article; -- 全大寫
SELECT LOWER(title) FROM article; -- 全小寫
4. SUBSTR(str, pos, len) — 靈活截取(核心)
-- 從第 10 字符起取 50 字符(位置從 1 開始)
SELECT SUBSTR(content, 10, 50) FROM article;
-- 從第 10 字符取到末尾
SELECT SUBSTR(content, 10) FROM article;
-- 從末尾倒數 20 字符
SELECT SUBSTR(content, -20) FROM article;
SUBSTRING() 為同義詞
- 負數位置表示從末尾倒數
- 超出長度自動截斷,不報錯
實戰組合:列表摘要生成
SELECT
id,
LEFT(title, 30) AS short_title,
CONCAT(LEFT(content, 100), '...') AS excerpt,
UPPER(category) AS cat
FROM articles
WHERE status = 1
ORDER BY created_at DESC
LIMIT 20;
效能提示
- 這些函數在 WHERE 條件中使用會導致**索引失效**(如
WHERE LEFT(col, 3) = 'abc')
- 若需前綴匹配,改用
WHERE col LIKE 'abc%' 走索引
- SELECT 列表中使用無索引影響