- カテゴリ:
文字列とバイナリ関数 (マッチング/比較)
SUBSTR , SUBSTRING¶
start_expr で指定された文字/バイトから開始し、オプションで長さを制限して、 base_expr から 文字列またはバイナリ 値の一部を返します。
これらの関数は同義語です。
構文¶
引数¶
base_exprVARCHAR または BINARY 値に評価される式。
start_expr整数に評価される式。部分文字列が始まるオフセットを指定します。オフセットは次の単位で測定されます。
入力が VARCHAR の場合、 UTF-8文字の数。
入力が BINARY の場合のバイト数。
開始位置は0ベースではなく、1ベースです。例えば、
SUBSTR('abc', 1, 1)は、bではなく、aを返します。length_expr整数に評価される式。次を指定します。
入力が VARCHAR の場合に返す UTF-8文字の数。
入力が BINARY の場合に返すバイト数。
0以上の長さを指定します。長さが負の数の場合、関数は空の文字列を返します。
戻り値¶
返される値のデータ型は、 base_expr (VARCHAR または BINARY)のデータ型と同じです。
入力のいずれかが NULLの場合、 NULLが返されます。
使用上の注意¶
length_exprが指定された場合、length_expr文字/バイトまでが返されます。length_exprが指定されていない場合は、文字列またはバイナリ値の最後までのすべての文字が返されます。start_exprの値は1から始まります。0が指定されている場合、1として扱われます。
負の値が指定されている場合、開始位置は、文字列またはバイナリ値の末尾から
start_expr文字/バイトとして計算されます。位置が文字列またはバイナリ値の範囲外の場合、空の値が返されます。
照合順序の詳細¶
照合は VARCHAR 入力に適用されます。最初のパラメーターの入力データ型が BINARY の場合、照合は適用されません。
No impact. 照合順序は構文的に受け入れられますが、照合順序は処理には影響しません。例えば、2文字や3文字の文字(ハンガリー語の「dzs」やチェコ語の「ch」など)は、長さの引数では(1文字ではなく)2文字や3文字としてカウントされます。
The collation of the result is the same as the collation of the input. これは、戻り値がネストされた関数呼び出しの一部として別の関数に渡される場合に役立ちます。
例¶
以下の例では、 SUBSTR 関数を使用しています。
基本的な例¶
次の例では、 SUBSTR 関数を使って、文字列の9文字目から始まる部分を返し、返される値の長さを3文字に制限しています。
異なる開始と長さの値の指定¶
次の例は、 start_expr と length_expr に異なる値を指定した場合に、同じ base_expr に対して返される部分文字列を示しています。
メール、電話、日付文字列の部分文字列を返す¶
以下の例は、テーブル内の顧客情報の部分文字列を返します。
テーブルを作成してデータを挿入します。
メールアドレスからドメインを抽出するには、 POSITION 関数と SUBSTR 関数を使用します。この例では、各文字列の @ の位置を求め、1文字追加して次の文字から開始します。
Tip
POSITION 関数を使用すると、空文字(' ')やアンダースコア(_)など、他の文字の位置を見つけることができます。
テーブルの cust_phone 列では、市外局番は常に最初の3文字です。電話番号から市外局番を抽出します。
電話番号から市外局番を削除します。
テーブルの activation_date 列では、日付は常に YYYYMMDD の形式です。これらの文字列から年、月、日を抽出します。