| 函數 | 語法 | 用途 | 示例結果 |
|---|---|---|---|
| LEFT | LEFT(str, len) | 從左側截取指定長度 | LEFT('abcdef', 3) → 'abc' |
| RIGHT | RIGHT(str, len) | 從右側截取指定長度 | RIGHT('abcdef', 3) → 'def' |
| SUBSTRING | SUBSTRING(str, pos[, len]) | 從任意位置截取,支援負數 | SUBSTRING('abcdef', 2, 3) → 'bcd' SUBSTRING('abcdef', -3) → 'def' |
| SUBSTRING_INDEX | SUBSTRING_INDEX(str, delim, count) | 按分隔符截取,count>0 取左側,<0 取右側 | SUBSTRING_INDEX('a.b.c', '.', 2) → 'a.b' SUBSTRING_INDEX('a.b.c', '.', -1) → 'c' |
返回字符串最左側 length 個字符。length > 字符串長度 時返回整串。
返回字符串最右側 length 個字符。行為同 LEFT 方向相反。
pos > 0:從左往右數(1 起始)pos < 0:從右往左數(-1 為最後一字符)len 表示截取到字符串末尾極其實用於解析路徑、域名、CSV 等結構化字符串:
-- 獲取域名主體
SELECT SUBSTRING_INDEX('www.example.com', '.', -2); -- 'example.com'
-- 獲取文件名(去擴展名)
SELECT SUBSTRING_INDEX('/path/to/file.txt', '.', 1); -- '/path/to/file'
-- 解析 CSV 第 3 列
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('a,b,c,d', ',', 3), ',', -1); -- 'c'
-- 截取郵箱用戶名部分
SELECT SUBSTRING_INDEX(email, '@', 1) FROM users;
-- 截取 URL 最後一級路徑
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(url, '/', -1), '?', 1) FROM logs;
-- 固定長度截取並補全
SELECT CONCAT(LEFT(desc, 50), '...') FROM articles;
所有函數 MySQL 4.0+ 全版本支援。SUBSTRING 別名 SUBSTR、MID 通用。