萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 字串截取函數完全指南:LEFT、RIGHT、SUBSTRING、SUBSTRING_INDEX 實戰範例

MySQL 字串處理函數大全

MySQL 提供豐富的字串截取函數,掌握其語法與差異能大幅簡化資料處理邏輯。

1. LEFT / RIGHT — 固定長度從左/右截取

LEFT(str, length)   -- 從左起截取 length 字元
RIGHT(str, length)  -- 從右起截取 length 字元

SELECT LEFT('hxsdit.com', 3);   -- 'hxs'
SELECT RIGHT('hxsdit.com', 3);  -- 'com'

2. SUBSTRING / SUBSTR / MID — 彈性位置截取

SUBSTRING(str, pos)           -- 從 pos 截到結束
SUBSTRING(str, pos, length)   -- 從 pos 截取 length 字元
-- pos 可為負數(倒數),length 不可為負

SELECT SUBSTRING('hxsdit.com', 4);       -- 'dit.com'
SELECT SUBSTRING('hxsdit.com', 4, 2);    -- 'di'
SELECT SUBSTRING('hxsdit.com', -4);      -- '.com'
SELECT SUBSTRING('hxsdit.com', -4, 2);   -- '.c'

3. SUBSTRING_INDEX — 依分隔符截取(極實用)

SUBSTRING_INDEX(str, delim, count)
-- count > 0:第 count 個 delim 之前的內容
-- count < 0:倒數第 |count| 個 delim 之後的內容

SELECT SUBSTRING_INDEX('www.baidu.com', '.', 2);   -- 'www.baidu'
SELECT SUBSTRING_INDEX('www.baidu.com', '.', -2);  -- 'com'
SELECT SUBSTRING_INDEX('www.sqlstudy.com.cn', '.', 2);   -- 'www.sqlstudy'
SELECT SUBSTRING_INDEX('www.sqlstudy.com.cn', '.', -2);  -- 'com.cn'
-- 找不到 delim 回傳整個字串
SELECT SUBSTRING_INDEX('www.sqlstudy.com.cn', '.coc', 1); -- 'www.sqlstudy.com.cn'

實戰應用場景

  • 解析域名層級:SUBSTRING_INDEX(domain, '.', -2) 取主域名
  • 切割 CSV 欄位:配合 SUBSTRING_INDEX 遞迴拆解
  • 路徑處理:取檔名 SUBSTRING_INDEX(path, '/', -1)

效能提示:字串函數在 WHERE 條件中會導致全表掃描,若頻繁查詢建議建立函數索引(MySQL 8.0+)或冗餘欄位存儲預計算結果。

copyright © 萬盛學電腦網 all rights reserved