MariaDBでは、SUBSTRING_INDEX()
組み込みの文字列関数です。指定された区切り文字が一定回数発生する前の文字列から部分文字列を返します。
SUBSTRING_INDEX()
3つの引数が必要です。文字列、区切り文字、およびカウント(つまり、その区切り文字の出現回数)。
構文
構文は次のようになります:
SUBSTRING_INDEX(str,delim,count)
str
文字列、delim
は区切り文字であり、count
返される部分文字列を決定するために使用するその区切り文字の出現回数です。
count
の場合 が正の場合、最後の区切り文字の左側(左から数えて)のすべてが返されます。 count
の場合 が負の場合、最後の区切り文字の右側(右から数えて)のすべてが返されます。
例
基本的な例は次のとおりです。
SELECT SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', 3);
結果:
+-------------------------------------------------------+ | SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', 3) | +-------------------------------------------------------+ | /users/homer | +-------------------------------------------------------+
負の数
カウントに負の値を指定すると、文字列の末尾から逆方向にカウントされます:
SELECT SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', -3);
結果:
+--------------------------------------------------------+ | SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', -3) | +--------------------------------------------------------+ | homer/docs/cat_vids | +--------------------------------------------------------+
区切り文字が見つかりません
文字列に区切り文字が存在しない場合は、文字列全体が返されます:
SELECT SUBSTRING_INDEX('/users/homer/docs/cat_vids', '.', 3);
結果:
+-------------------------------------------------------+ | SUBSTRING_INDEX('/users/homer/docs/cat_vids', '.', 3) | +-------------------------------------------------------+ | /users/homer/docs/cat_vids | +-------------------------------------------------------+
ヌル引数
引数のいずれか(またはすべて)がnull
の場合 、SUBSTRING_INDEX()
関数はnull
を返します :
SELECT
SUBSTRING_INDEX(null, '/', 3) AS "1",
SUBSTRING_INDEX('/users/homer/docs/cat_vids', null, 3) AS "2",
SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', null) AS "3",
SUBSTRING_INDEX(null, null, null) AS "4";
結果:
+------+------+------+------+ | 1 | 2 | 3 | 4 | +------+------+------+------+ | NULL | NULL | NULL | NULL | +------+------+------+------+
引数がありません
SUBSTRING_INDEX()
を呼び出す 引数を渡さないとエラーが発生します:
SELECT SUBSTRING_INDEX();
結果:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'SUBSTRING_INDEX'