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

MySQL 字串分割與拼接實戰:SUBSTRING_INDEX 與 CONCAT 組合技巧

     編輯:MySQL 綜合教學

前言

在資料庫操作中,經常需要將一個欄位的字串拆分後重新組合,或是寫入至其他欄位。MySQL 提供了 SUBSTRING_INDEX 與 CONCAT 兩個強大的字串函數,搭配使用即可輕鬆完成分割與拼接任務。本文將透過實際電話號碼拆分案例,詳細示範其用法。

核心函數介紹

  • SUBSTRING_INDEX(str, delim, count):依指定分隔符 delim 切割字串,count 為正數時從左側取第 count 個分隔符前的內容;為負數時從右側取第 |count| 個分隔符後的內容。
  • CONCAT(str1, str2, ...):將多個字串連接成一個字串,若任一參數為 NULL 則回傳 NULL。

實戰案例:電話號碼拆分總機與分機

假設 tb_user 表中 phone 欄位儲存格式為 區碼-總機號碼-分機(例:010-88888882-5612),需將其拆分為「總機」與「分機」兩欄。

查詢拆分結果

SELECT 
    SUBSTRING_INDEX(phone, '-', 2) AS PNumber,  -- 取前兩段:010-88888882
    SUBSTRING_INDEX(phone, '-', -1) AS Ext,     -- 取最後一段:5612
    phone
FROM tb_user
WHERE ucid = 271338;

執行結果:

+----------------+------+-------------------+
| PNumber        | Ext  | phone             |
+----------------+------+-------------------+
| 010-88888882   | 5612 | 010-88888882-5612 |
+----------------+------+-------------------+

更新分機號碼

若需將分機號碼修改為 1234,可結合 CONCAT 重新組合字串:

UPDATE tb_user
SET phone = CONCAT(SUBSTRING_INDEX(phone, '-', 2), '-', '1234')
WHERE ucid = 271338;

執行後,該筆資料的 phone 將變為 010-88888882-1234。

小結

SUBSTRING_INDEX 靈活的正負計數特性,配合 CONCAT 的拼接能力,能高效處理各類固定格式的字串拆分與重組需求,是 MySQL 字串操作中的經典組合。

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