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

MySQL SUBSTRING_INDEX 函數詳解:靈活截取分隔字符串

     編輯:MySQL 綜合教學

MySQL SUBSTRING_INDEX 函數詳解:靈活截取分隔字符串

在 MySQL 中處理類似「15,151,152,16」這樣的逗號分隔字符串時,SUBSTRING_INDEX() 是最得力的工具。它能依據指定分隔符出現的次數,從左或從右精準截取子串,無需編寫複雜的應用層代碼。

核心語法

SUBSTRING_INDEX(str, delim, count)
  • str:原字符串
  • delim:分隔符(可為多字符)
  • count:正數從左向右數第 count 個分隔符左側內容;負數從右向左數第 |count| 個分隔符右側內容

實戰範例

以字符串 '15,151,152,16' 為例:

-- 取第一段(左起第一個逗號之前)
SELECT SUBSTRING_INDEX('15,151,152,16', ',', 1);        -- 15

-- 取第二段:先取左起第二個逗號之前,再取其右起第一段
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('15,151,152,16', ',', 2), ',', -1); -- 151

-- 取倒數第二段:先取右起第二個逗號之後,再取其左起第一段
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('15,151,152,16', ',', -2), ',', 1); -- 152

-- 取最後一段(右起第一個逗號之後)
SELECT SUBSTRING_INDEX('15,151,152,16', ',', -1);       -- 16

進階應用:提取任意第 N 段

通用模式:SUBSTRING_INDEX(SUBSTRING_INDEX(col, delim, n), delim, -1)

例如字段 xxx 值為 '201207|123|23.5|100|50|',取第 3 段 23.5:

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(xxx, '|', 3), '|', -1);

內層函數截取前 3 段,外層函數再從結果右側取第一段,即得到第 3 段內容。

官方示例回顧

mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);   -- 'www.mysql'
mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2); -- 'mysql.com'

該函數對多字節字符集(如 UTF-8)完全可靠,是處理分隔數據的首選方案。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved