カテゴリ:

文字列とバイナリ関数 (マッチング/比較)

SUBSTR , SUBSTRING

開始式 で指定された文字/バイトから開始し、オプションで長さを制限して、 ベース式 から文字列またはバイナリ値の一部を返します。

これらの関数は同義語です。

こちらもご覧ください

LEFTRIGHT

構文

SUBSTR( <base_expr>, <start_expr> [ , <length_expr> ] )

SUBSTRING( <base_expr>, <start_expr> [ , <length_expr> ] )

引数

ベース式

これは、 VARCHAR または BINARY 値でなければなりません。

開始式

開始位置は、整数に評価される式でなければなりません。部分文字列が始まるオフセットを指定します。オフセットは次の単位で測定されます。

  • 入力が VARCHAR の場合、 UTF-8文字の数。

  • 入力が BINARY の場合のバイト数。

開始位置は0ベースではなく、1ベースです。 SUBSTR('abc', 1, 1) は、「b」ではなく「a」を返します。

長さ式

長さは整数に評価される式でなければなりません。次を指定する必要があります。

  • 入力が VARCHAR の場合に返す UTF-8文字の数。

  • 入力が BINARY の場合に返すバイト数。

長さはゼロ以上でなければなりません。長さが負の数の場合、関数は空の文字列を返します。

戻り値

返される値のデータ型は、 ベース式BINARY または VARCHAR)のデータ型と同じです。

使用上の注意

  • 長さ式 を使用すると、最大 長さ式 文字/バイトが返されます。それ以外の場合は、文字列またはバイナリ値の最後までのすべての文字が返されます。

  • 開始式 の値は1から始まります。

    • 0が指定されている場合、1として扱われます。

    • 負の値が指定されている場合、開始位置は、文字列またはバイナリ値の末尾から 開始式 文字/バイトとして計算されます。位置が文字列またはバイナリ値の範囲外の場合、空の値が返されます。

  • 入力のいずれかが 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]                     |
----------+--------+-----+----------------------------+