# SUBSTR関数

SUBSTR関数は文字列式あるいはビット列式に作用します。 結果のデータ型はそれぞれ、前者の場合はVARCHARで、後者の場合はVARCHAR FOR BIT DATAです。 結果の最大長は元の引数の型の最大長です。

#### 構文

    SUBSTR({ 文字式 },
       開始位置 [, 列の長さ ] )

引数の開始位置と省略可能な列の長さはどちらも整数式です。 先頭の文字あるいはビットの開始位置は1です。 もし0が与えられた場合、Derbyは1が与えられたものとみなします。

文字式のデータ型はCHAR、VARCHAR、LONG VARCHAR、あるいは(ビット式ではない)文字列に暗黙のうちに変換可能な組み込み型の何れかです。

文字式では開始位置および列の長さというパラメータは文字をさします。ビット式については、開始位置および列の長さというパラメータはビットをさします。

もし開始位置が正であれば、その数は基となる式の先頭から数えた位置を指します。(先頭の文字は1と数えます。)開始位置は負とすることができません。

もし列の長さが指定されなかった場合、SUBSTRは式の開始位置から末尾までの部分列を返します。もし列の長さが指定された場合、SUBSTRは開始位置から始まる列の長さの、VARCHARあるいはVARBITを返します。 もし列の長さに負の数が与えられた場合、SUBSTR関数はエラーを返します。

#### 例

`hello`という単語の二つ目の文字から最後までの部分列を返すには、次のような節を書きます。

    VALUES SUBSTR('hello', 2)

結果は'`ello`'となります。
`hello`という単語の最初の文字から二つ目の文字までの部分列を返すには、次のような節を書きます。

    VALUES SUBSTR('hello',1,2)

結果は'`he`'となります。
親トピック: 組み込み関数