MariaDBでは、SUBSTRING()
は、指定された文字列からサブ文字列を返す組み込みの文字列関数です。
SUBSTRING()
少なくとも2つの引数が必要です。文字列、およびサブ文字列を抽出する位置。また、サブストリングの長さを指定できるオプションの3番目の引数も受け入れます。
構文
構文は次の形式を取ります:
SUBSTRING(str,pos),
SUBSTRING(str FROM pos),
SUBSTRING(str,pos,len),
SUBSTRING(str FROM pos FOR len)
str
文字列、pos
は部分文字列の開始位置であり、len
抽出する文字数です。
FROM
を使用する2つのフォーム キーワードは標準のSQL構文です。
例
基本的な例は次のとおりです。
SELECT SUBSTRING('Big fat cat', 5);
結果:
+-----------------------------+ | SUBSTRING('Big fat cat', 5) | +-----------------------------+ | fat cat | +-----------------------------+
これは同じ例ですが、標準のSQL構文を使用しています:
SELECT SUBSTRING('Big fat cat' FROM 5);
結果:
+---------------------------------+ | SUBSTRING('Big fat cat' FROM 5) | +---------------------------------+ | fat cat | +---------------------------------+
部分文字列の長さ
抽出する部分文字列の長さを指定する例を次に示します。
SELECT SUBSTRING('Big fat cat', 5, 3);
結果:
+--------------------------------+ | SUBSTRING('Big fat cat', 5, 3) | +--------------------------------+ | fat | +--------------------------------+
そして、ここでは標準のSQL構文を使用しています:
SELECT SUBSTRING('Big fat cat' FROM 5 FOR 3);
結果:
+---------------------------------------+ | SUBSTRING('Big fat cat' FROM 5 FOR 3) | +---------------------------------------+ | fat | +---------------------------------------+
ネガティブポジション
位置に負の値を指定すると、開始位置が文字列の末尾から逆方向にカウントされます。
SELECT SUBSTRING('Big fat cat', -3);
結果:
+------------------------------+ | SUBSTRING('Big fat cat', -3) | +------------------------------+ | cat | +------------------------------+
標準のSQL構文を使用する場合は、負の位置も使用できます。
SELECT SUBSTRING('Big fat cat' FROM -7 FOR 3);
結果:
+----------------------------------------+ | SUBSTRING('Big fat cat' FROM -7 FOR 3) | +----------------------------------------+ | fat | +----------------------------------------+
この場合、部分文字列の長さも設定します。
Oracleモード
Oracleモードの場合、開始位置は0
(ゼロ)は1
として扱われます 。ただし、開始位置は1
1
としても扱われます 。
これは、0
である他のモードとは対照的です。 空の文字列を返します。
例:
SET SQL_MODE=ORACLE;
SELECT
SUBSTRING('Big fat cat', 0) AS "0",
SUBSTRING('Big fat cat', 1) AS "1";
結果:
+-------------+-------------+ | 0 | 1 | +-------------+-------------+ | Big fat cat | Big fat cat | +-------------+-------------+
ここではデフォルトモードになっています:
SET SQL_MODE=DEFAULT;
SELECT
SUBSTRING('Big fat cat', 0) AS "0",
SUBSTRING('Big fat cat', 1) AS "1";
結果:
+------+-------------+ | 0 | 1 | +------+-------------+ | | Big fat cat | +------+-------------+
ヌル引数
引数のいずれか(またはすべて)がnull
の場合 、SUBSTRING()
関数はnull
を返します :
SELECT
SUBSTRING(null, 3, 3),
SUBSTRING('Coffee', null, 3),
SUBSTRING('Coffee', 3, null),
SUBSTRING(null, null, null);
結果:
+-----------------------+------------------------------+------------------------------+-----------------------------+ | SUBSTRING(null, 3, 3) | SUBSTRING('Coffee', null, 3) | SUBSTRING('Coffee', 3, null) | SUBSTRING(null, null, null) | +-----------------------+------------------------------+------------------------------+-----------------------------+ | NULL | NULL | NULL | NULL | +-----------------------+------------------------------+------------------------------+-----------------------------+
引数がありません
SUBSTRING()
を呼び出す 引数を渡さないとエラーが発生します:
SELECT SUBSTRING();
結果:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1