- カテゴリ:
文字列とバイナリ関数 (マッチング/比較)
SUBSTR , SUBSTRING¶
base_expr
で指定された文字/バイトから開始し、オプションで長さを制限して、 start_expr
から文字列またはバイナリ値の一部を返します。
これらの関数は同義語です。
構文¶
SUBSTR( <base_expr>, <start_expr> [ , <length_expr> ] )
SUBSTRING( <base_expr>, <start_expr> [ , <length_expr> ] )
引数¶
base_expr
これは、
VARCHAR
またはBINARY
値でなければなりません。start_expr
開始位置は、整数に評価される式でなければなりません。部分文字列が始まるオフセットを指定します。オフセットは次の単位で測定されます。
入力が
VARCHAR
の場合、 UTF-8文字の数。入力が
BINARY
の場合のバイト数。
開始位置は0ベースではなく、1ベースです。
SUBSTR('abc', 1, 1)
は、「b」ではなく「a」を返します。length_expr
長さは整数に評価される式でなければなりません。次を指定する必要があります。
入力が
VARCHAR
の場合に返す UTF-8文字の数。入力が
BINARY
の場合に返すバイト数。
長さはゼロ以上でなければなりません。長さが負の数の場合、関数は空の文字列を返します。
戻り値¶
返される値のデータ型は、 base_expr
(BINARY
または VARCHAR
)のデータ型と同じです。
使用上の注意¶
length_expr
を使用すると、最大length_expr
文字/バイトが返されます。それ以外の場合は、文字列またはバイナリ値の最後までの文字すべてが返されます。start_expr
の値は1から始まります。0が指定されている場合、1として扱われます。
負の値が指定されている場合、開始位置は、文字列またはバイナリ値の末尾から
start_expr
文字/バイトとして計算されます。位置が文字列またはバイナリ値の範囲外の場合、空の値が返されます。
入力のいずれかが NULLの場合、 NULLが返されます。
照合の詳細¶
照合は
VARCHAR
入力に適用されます。最初のパラメーターの入力データ型がBINARY
の場合、照合は適用されません。No impact. 照合は構文的に受け入れられますが、照合は処理に影響しません。例えば、2文字と3文字の文字を含む言語(ハンガリー語の「dzs」、チェコ語の「ch」)では、長さ引数として2文字または3文字(1文字ではない)としてカウントされます。
The collation of the result is the same as the collation of the input. これは、戻り値がネストされた関数呼び出しの一部として別の関数に渡される場合に役立ちます。
例¶
SELECT SUBSTR('testing 1 2 3', 9, 5) FROM x;
-------------------------------+
substr('testing 1 2 3', 9, 5) |
-------------------------------+
1 2 3 |
-------------------------------+
SELECT '123456', pos, len, SUBSTR('123456', pos, len) FROM o;
----------+--------+-----+----------------------------+
'123456' | pos | len | substr('123456', pos, len) |
----------+--------+-----+----------------------------+
123456 | -1 | 3 | 6 |
123456 | -3 | 3 | 456 |
123456 | -3 | 7 | 456 |
123456 | -5 | 3 | 234 |
123456 | -7 | 3 | |
123456 | 0 | 3 | 123 |
123456 | 0 | 7 | 123456 |
123456 | 1 | 3 | 123 |
123456 | 3 | 3 | 345 |
123456 | 3 | 7 | 3456 |
123456 | 5 | 3 | 56 |
123456 | 5 | 7 | 56 |
123456 | 7 | 3 | |
123456 | [NULL] | 3 | [NULL] |
123456 | [NULL] | 7 | [NULL] |
----------+--------+-----+----------------------------+