SUBSTRING_INDEX関数(指定した区切り文字よりも前または後の文字列を取得する)

MySQL で SUBSTRING_INDEX 関数を使用すると、引数に指定した文字列の中に含まれる指定の区切り文字よりも前または後の文字列を取得することができます。ここでは MySQL における SUBSTRING_INDEX 関数の使い方について解説します。

(Last modified: )

SUBSTRING_INDEX関数の使い方

SUBSTRING_INDEX 関数は引数に指定した文字列の中に含まれる指定の区切り文字よりも前または後の文字列を取得します。書式は次の通りです。

SUBSTRING_INDEX(str,delim,count)

対象となる文字列( str )に含まれる区切り文字( delim )を文字列の先頭から探します。区切り文字が指定した回数( count )見つかったら、その位置よりも前の文字列を取得します。 count が負の数の場合は文字列の末尾から探し、見つかった位置よりも後の文字列を取得します。この時区切り文字は大文字と小文字は区別されます。

-- --

それでは実際に試してみます。次のように実行してください。

select substring_index('www.example.com/sub/index.html','.',1);
select substring_index('www.example.com/sub/index.html','.',2);

MySQL/SUBSTRING_INDEX 関数の使い方(1)

最初の SELECT 文では区切り文字が最初に見つかった位置から前の部分の文字列を取得し、 2 番目の SELECT 文では区切り文字が 2 番目に見つかった位置から前の部分の文字列を取得しています。

次に回数に負の値を指定した場合です。次のように実行してください。

select substring_index('www.example.com/sub/index.html','/',-1);
select substring_index('www.example.com/sub/index.html','/',-2);

MySQL/SUBSTRING_INDEX 関数の使い方(2)

最初の SELECT 文では文字列の末尾からみていき、区切り文字が最初に見つかった位置から後の部分の文字列を取得し、 2 番目の SELECT 文では区切り文字が 2 番目に見つかった位置から後の部分の文字列を取得しています。

区切り文字は大文字と小文字を区別します。

select substring_index('aaaAAaAaAaaaA', 'aAa', 1);

MySQL/SUBSTRING_INDEX 関数の使い方(3)

SUBSTRING_INDEX 関数はマルチバイト文字でも使用することができます。

select substring_index('大阪府大阪市中央区', '大阪', 2);

MySQL/SUBSTRING_INDEX 関数の使い方(4)

-- --

substring_index 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。