MySQL 字串切割方法徹底解析 | 使用 SUBSTRING、LEFT、RIGHT 的實作範例

1. MySQL 中的字串操作基礎

在資料庫管理中,字串操作是資料加工與查詢結果最佳化不可或缺的技能。MySQL 提供了方便的函式,用於字串的切割與操作。本文將以特別重要的SUBSTRING函式為中心,介紹其他字串操作方法,並說明實務上的使用方式。

2. MySQL 基本的字串切割 – SUBSTRING 函式

MySQL的SUBSTRING函式是最常用於指定並取出字串一部份的函式之一。

SUBSTRING 函式的基本語法

SUBSTRING(文字列, 開始位置, 文字数)
  • 文字列: 想要切出的字串。
  • 開始位置: 切割的起始位置(第一個字的位置為1)。
  • 文字数: 取出的字元數(若省略,則從起始位置取到最後)。

範例: 基本使用範例

SELECT SUBSTRING('Hello World', 2, 5);
此查詢會從字串「Hello World」的第2個字元開始切出5個字元,得到「ello 」的結果。

使用負值的 SUBSTRING 函式

若在起始位置指定負值,則可以從字串末端倒數計算並切割。
SELECT SUBSTRING('abcdefg', -3, 2);
此查詢會返回從末端第3個與第4個字元的「ef」。

3. 使用 LEFT 函數與 RIGHT 函數切割字串

SUBSTRING函數的替代方案是使用 LEFTRIGHT 函數,串的開頭或結尾取得指定的字元數。

LEFT 函數

LEFT函數會從字串的左側切出指定的字元數。
SELECT LEFT('abcdefg', 3);
此查詢會得到「abc」的結果。

RIGHT 函數

另一方面,RIGHT函數則是從字串的右側指定字元數取得。
SELECT RIGHT('abcdefg', 3);
此查詢會回傳「efg」的結果。這些函數在需要從左或右任一側切出固定字元數時特別方便。

4. 使用 SUBSTRING_INDEX 函數分割字串

SUBSTRING_INDEX 函數是根據指定的分隔字元來分割字串,並取得特定子字串的用途。這在 CSV 或多個值串接的欄位中特別有用。

SUBSTRING_INDEX 函數的基本語法

SUBSTRING_INDEX(文字列, 区切り文字, N)
  • 字串: 操作對象的字串。
  • 分隔字元: 用於分割字串的基準字元(例如逗號)。
  • N: 取得的分隔數量。正值表示從開頭開始,負值表示從末端計算。

範例:使用範例

SELECT SUBSTRING_INDEX('apple,orange,banana', ',', 2);
此查詢會從以逗號分隔的「apple,orange,banana」字串中取得前兩個「apple,orange」。

5. 實踐性的應用: 資料庫操作中的字串切割

文字串操作在實際的資料庫管理中非常有用。這裡介紹幾個應用範例。

抽取商品名稱的一部

以下查詢會搜尋商品名稱末尾為「大盛」的資料。
SELECT * FROM products WHERE SUBSTRING(name, -2, 2) = '大盛';
這樣就能指定資料的末尾部分,抽取符合特定條件的記錄。

切割數值資料並計算

以下為切割數值欄位的一部並用於計算的範例。
SELECT name, price, SUBSTRING(price, -2, 2) * 5 AS total FROM products;
此查詢會切割商品價格的末兩位,並將其乘以5,顯示為「total」。

6. 性能最佳化的建議

字串操作很方便,但在大型資料庫中可能會影響效能。以下是提升效能的幾個建議。

善用索引

在搜尋字串的一部份時,設定適當的索引可以大幅提升查詢速度。例如,將 LIKE 子句與索引結合時,使用像 LIKE 'abc%' 這樣從模式開頭開始搜尋的查詢是最佳的。若使用 LIKE '%abc' 之類的後方匹配,索引將不會被使用,效能可能下降。

大量資料的字串操作

在大型資料表中頻繁執行字串操作時,考慮在應用層面處理字串加工也是一種方法。若資料庫內的處理變得沉重,將處理分散到應用程式中可以減輕負載。

7. 總結

在 MySQL 中的字串操作是資料抽取與報表製作的強大工具。SUBSTRINGLEFTRIGHT 等函式,善用它們即可輕鬆取得所需資訊。此外,為了最佳化效能,適當的索引設定與處理方式的工夫也很重要。 掌握這些技術後,您將能進一步提升 MySQL 字串操作的技能。建議您在下一步學習正規表達式及其他進階的字串操作技術。