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