SUBSTRING_INDEX
説明
SUBSTRING_INDEX関数は、指定された区切り文字と出現回数に基づいて文字列から部分文字列を抽出するために使用されます。この関数は左または右からのカウントをサポートしています。
構文
SUBSTRING_INDEX(<content>, <delimiter>, <field>)
Parameters
| Parameter | Description |
|---|---|
<content> | 抽出元の文字列。型: VARCHAR |
<delimiter> | 区切り文字列。大文字小文字を区別し、マルチバイト対応。型: VARCHAR |
<field> | 区切り文字の出現回数。正の数は左から、負の数は右から数える。型: INT |
戻り値
VARCHAR型を返し、抽出された部分文字列を表します。
特殊ケース:
- field > 0の場合、左からfield番目の区切り文字より前の部分文字列を返します
- field < 0の場合、右から|field|番目の区切り文字より後の部分文字列を返します
- field = 0の場合、contentがNULLでないときは空文字列を返し、contentがNULLのときはNULLを返します
- いずれかのパラメータがNULLの場合、NULLを返します
例
- 左から最初のスペースより前の内容を抽出
SELECT substring_index('hello world', ' ', 1);
+----------------------------------------+
| substring_index('hello world', ' ', 1) |
+----------------------------------------+
| hello |
+----------------------------------------+
- 左側からすべてのコンテンツを抽出する(区切り文字の数が実際の出現回数より多い場合)
SELECT substring_index('hello world', ' ', 2);
+----------------------------------------+
| substring_index('hello world', ' ', 2) |
+----------------------------------------+
| hello world |
+----------------------------------------+
- 右端の最後のスペースより後のコンテンツを抽出する
SELECT substring_index('hello world', ' ', -1);
+-----------------------------------------+
| substring_index('hello world', ' ', -1) |
+-----------------------------------------+
| world |
+-----------------------------------------+
- フィールドが0の場合
SELECT substring_index('hello world', ' ', 0);
+----------------------------------------+
| substring_index('hello world', ' ', 0) |
+----------------------------------------+
| |
+----------------------------------------+