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

MySQL 字符串分割與拼接實戰:SUBSTRING_INDEX + CONCAT 靈活處理電話號碼

     編輯:MySQL 綜合教學

核心函數

函數語法說明
SUBSTRING_INDEXSUBSTRING_INDEX(str, delim, count)count>0:返回第 count 個分隔符左側內容;count<0:返回第 |count| 個分隔符右側內容
CONCATCONCAT(str1, str2, ...)拼接字符串,任一參數為 NULL 則結果為 NULL

實戰:電話號碼拆分「總機-分機」

原始數據:010-88888882-5612

SELECT
  SUBSTRING_INDEX(phone, '-', 2) AS PNumber,   -- 總機:前 2 段
  SUBSTRING_INDEX(phone, '-', -1) AS Ext,      -- 分機:最後 1 段
  phone
FROM tb_user
WHERE ucid = 271338;

結果:

PNumberExtphone
010-888888825612010-88888882-5612

實戰:修改分機號

將分機改為 1234:

UPDATE tb_user
SET phone = CONCAT(
  SUBSTRING_INDEX(phone, '-', 2),  -- 保留總機
  '-',                             -- 分隔符
  '1234'                           -- 新分機
)
WHERE ucid = 271338;

進階變體

需求SQL 片段
取第 3 段(不存在返回整串)SUBSTRING_INDEX(phone, '-', 3)
取倒數第 2 段SUBSTRING_INDEX(SUBSTRING_INDEX(phone, '-', -2), '-', 1)
統一分隔符為空格REPLACE(phone, '-', ' ')
防 NULL 安全拼接CONCAT_WS('-', part1, part2, part3)(自動跳過 NULL)

效能提示

  • SUBSTRING_INDEX 為字符串掃描,大表高頻調用建議冗余存儲拆分列或建立虛擬列索引(MySQL 5.7+);
  • 批量更新時分批次、避開業務高峰,防止鎖表過久。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved