文字列の一部を抜き出します。
SUBSTRは、文字値式の開始位置の文字から文字列長分の文字列を抜き出して返却します。
開始位置が正の場合、文字値式の先頭からが開始位置となります。
開始位置が0の場合、開始位置に1を指定したことと同じになります。
開始位置が負の場合、文字値式の終端からが開始位置となります。
文字列長を指定しない場合は、文字値式の終わりまでのすべての文字を返却します。文字列長が1より小さい場合、NULL値を返却します。
開始位置と文字列長のデータ型は、SMALLINT型またはINTEGER型を指定してください。定数を指定した場合の指定可能なデータ型は、“A.3 暗黙の型変換”の“表A.1 定数を含む暗黙の型変換可能なデータ型の組合せ”を参照してください。
戻り値のデータ型は、TEXT型です。
注意
SUBSTRには、上記の仕様と同等の動作をする関数と、SUBSTRINGと同等の動作をする関数との2つが存在します。上記の仕様と同等の動作にするためには、search_pathの修正が必要です。
search_pathはpostgresql.confで設定することを推奨します。この場合、インスタンス単位で有効になります。postgresql.confの設定方法については、“9.2.1 SUBSTRの注意事項”を参照してください。
search_pathの設定は、ユーザー単位やデータベース単位でも設定することが可能です。設定例について以下に示します。
ユーザー単位の設定例
SQLコマンドを実行することで設定可能です。ユーザー名は例としてuser1にしています。
ALTER USER user1 SET search_path = "$user",public,oracle,pg_catalog;
データベース単位の設定例
SQLコマンドを実行することで設定可能です。データベース名は例としてdb1にしています。
ALTER DATABASE db1 SET search_path = "$user",public,oracle,pg_catalog;
変更の際、「oracle」は、「pg_catalog」よりも前に指定する必要があります。
変更が未実施の場合、SUBSTRはSUBSTRINGと同等となります。
参照
ALTER USER、ALTER DATABASEの詳細については、“PostgreSQL文書”の“リファレンス” の“SQLコマンド”を参照してください。
参考
SUBSTRINGの一般規則は以下になります。
開始位置が正、0、負に関わらず、文字値式の先頭からが開始位置になります。
文字列長を指定しない場合、文字値式の終わりまでのすべての文字を返却します。
返却する文字式が0以下、または指定した文字列長が1より小さい場合、空文字列を返却します。
参照
SUBSTRINGの詳細については、“PostgreSQL文書”の“SQL言語”の“文字列関数と演算子”を参照してください。
例
次の例では、「ABCDEFG」の一部の文字列を抜き出しています。
SELECT SUBSTR('ABCDEFG',3,4) "Substring" FROM DUAL; Substring ----------- CDEF (1 row) SELECT SUBSTR('ABCDEFG',-5,4) "Substring" FROM DUAL; Substring ----------- CDEF (1 row)