首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL SUBSTRING_INDEX 進階用法:靈活分割逗號分隔字符串

     編輯:MySQL 資料庫相關知識

函數語法回顧

SUBSTRING_INDEX(str, delim, count)
-- str: 源字符串
-- delim: 分隔符
-- count: 正數從左向右數第 count 個分隔符前的內容;負數從右向左數

實戰案例:提取 '15,151,152,16' 中各段

目標SQL 寫法結果原理解析
第 1 段 SUBSTRING_INDEX('15,151,152,16', ',', 1) 15 從左數第 1 個逗號前的內容
第 2 段 SUBSTRING_INDEX(SUBSTRING_INDEX('15,151,152,16', ',', 2), ',', -1) 151 先取前 2 段 '15,151',再取最後 1 段
第 3 段 SUBSTRING_INDEX(SUBSTRING_INDEX('15,151,152,16', ',', -2), ',', 1) 152 從右數第 2 個逗號到末尾 '152,16',再取首段
第 4 段 SUBSTRING_INDEX('15,151,152,16', ',', -1) 16 從右數第 1 個逗號後的內容

通用提取第 N 段模板

-- 提取第 N 段(N 從 1 開始)
-- 正向:先取前 N 段,再取最後 1 段
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(str, ',', N), ',', -1);

-- 逆向:從右數總段數 - N + 1
-- 需先知道總段數或用動態 SQL

應用場景

  • IP 地址段提取
  • 標籤/分類字符串解析
  • CSV 格式數據清洗
  • 路徑層級拆分

性能提示

SUBSTRING_INDEX 為字符串函數,大數據量下建議:

  1. 應用層預處理後入庫
  2. 使用 JSON 類型存儲結構化數組(MySQL 5.7+)
  3. 創建虛擬列 + 索引加速查詢
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved