substring関数

substring関数は、指定された数値の開始位置および指定された数値の部分文字列の長さに従って、指定された文字列から文字列を抽出します。

構文

returnvalue substring (source, position [, substring_length] )

source ::= any*
position ::= integer*
substring_length ::= integer*
returnvalue ::= string

セマンティクス

source
部分文字列の抽出元となる入力文字列。この引数は、一連の文字列に暗黙的にキャストされます。
position

この引数は、ソース内の部分文字列の開始点を示します。ソース文字列の最初の文字はpositionが0です。

positionに対して整数以外の値が指定された場合は、エラーがスローされます。

substring_length

この引数は、position値から始まる部分文字列の長さを示します。指定した値がソースの長さより大きい場合、この引数ではソースの長さとみなされます。

substring_lengthに対して整数以外の値が指定された場合は、エラーがスローされます。

returnvalue

関数が文字を返さなかった場合は、空の文字列("")を返します。

substring_lengthが1未満の場合は、空の文字列("")を返します。

source引数がNULLの場合はNULLを返します。

position引数が0未満またはsourceの長さ以下である場合にNULLを返します。

例11-1 substring関数

この例では、firstname内の最初の文字がユーザー表から選択されます。最初の文字を選択するために、position引数に値0を指定しています。

SELECT substring(firstname,0,1) as Initials FROM users;
 +----------+
 | Initials |
 +----------+
 | J        |
 | P        |
 | M        |
 +----------+

例11-2 substring関数

この例では、position引数に負の値を指定すると、出力値がNULLになることを示しています。

SELECT substring (firstname, -5, 4) FROM users;
 +----------+
 | Column_1 |
 +----------+
 | NULL     |
 | NULL     |
 | NULL     |
 +----------+

例11-3 substring関数

この例では、ユーザー表のfirstnameから最初の4文字を選択します。

SELECT substring (firstname, 0, 4) FROM users;
 +----------+
 | Column_1 |
 +----------+
 | John     |
 | Pete     |
 | Mary     |
 +----------+

例11-4 substring関数

この例では、position 2から100文字を選択します。firstnameに5文字を超える行がない場合でも、position 2からソースの長さまで出力されます。

SELECT substring (firstname, 2, 100) FROM users;
 +----------+
 | Column_1 |
 +----------+
 | hn       |
 | ter      |
 | ry       |
 +----------+

例11-5 substring関数

この例では、substring_length引数はオプションであるため指定されていません。このような場合、指定したpositionから始まる完全な部分文字列が取得されます。

SELECT substring (firstname, 2) FROM users;
 +----------+
 | Column_1 |
 +----------+
 | hn       |
 | ter      |
 | ry       |
 +----------+