メインコンテンツまでスキップ
バージョン: 4.x

SUBSTRING_INDEX

説明

SUBSTRING_INDEX関数は、指定された区切り文字と出現回数に基づいて文字列から部分文字列を抽出するために使用されます。この関数は左からまたは右からのカウントをサポートしています。

構文

SUBSTRING_INDEX(<content>, <delimiter>, <field>)

パラメータ

Parameterデスクリプション
<content>抽出元の文字列。型: VARCHAR
<delimiter>区切り文字列。大文字小文字を区別し、マルチバイト対応。型: VARCHAR
<field>区切り文字の出現回数。正の数は左から数え、負の数は右から数える。型: INT

Return Value

抽出された部分文字列を表すVARCHAR型を返します。

特殊なケース:

  • field > 0の場合、左からfield番目の区切り文字より前の部分文字列を返す
  • field < 0の場合、右から|field|番目の区切り文字より後の部分文字列を返す
  • field = 0の場合、contentがNULLでなければ空文字列を返し、contentがNULLであればNULLを返す
  • いずれかのパラメータがNULLの場合、NULLを返す

Examples

  1. 左から最初のスペースより前の内容を抽出
SELECT substring_index('hello world', ' ', 1);
+----------------------------------------+
| substring_index('hello world', ' ', 1) |
+----------------------------------------+
| hello |
+----------------------------------------+
  1. 左側からすべてのコンテンツを抽出する(delimiter数が実際の出現回数より多い場合)
SELECT substring_index('hello world', ' ', 2);
+----------------------------------------+
| substring_index('hello world', ' ', 2) |
+----------------------------------------+
| hello world |
+----------------------------------------+
  1. 右端から最後のスペースより後のコンテンツを抽出する
SELECT substring_index('hello world', ' ', -1);
+-----------------------------------------+
| substring_index('hello world', ' ', -1) |
+-----------------------------------------+
| world |
+-----------------------------------------+
  1. フィールドが0の場合
SELECT substring_index('hello world', ' ', 0);
+----------------------------------------+
| substring_index('hello world', ' ', 0) |
+----------------------------------------+
| |
+----------------------------------------+