>>-SUBSTR--(--string--,--start----+-------------+--)----------->< '-,--length---'
スキーマは SYSIBM です。
SUBSTR 関数は、ストリングのサブストリングを戻します。
string が文字ストリングの場合、関数の結果は、 その最初の引き数のコード・ページで示された文字ストリングになります。 2 進ストリングの場合には、関数の結果も 2 進ストリングになります。 漢字ストリングの場合は、 関数の結果も最初の引き数のコード・ページで示された漢字ストリングになります。 SUBSTR 関数のいずれかの引き数がヌル値の可能性がある場合、 結果もヌル値になる可能性があります。 いずれかの引き数がヌル値の場合、結果はヌル値になります。
string が文字ストリングまたは 2 進ストリングの場合、 string のサブストリングは、 ゼロ個以上の連続したバイトからなるストリング になります。 string が漢字ストリングの場合、string のサブストリングは、 ゼロ個以上の連続する 2 バイト文字からなるストリング になります。
length を明示的に指定した場合、 string の右側には必要な数のブランク文字 (文字ストリングの場合は 1 バイト、 漢字ストリングの場合は 2 バイト) が効率的に付加されて、 string のうちの指定したサブストリングが常に存在するようにされます。 length のデフォルト値は、 文字ストリングまたは 2 進ストリングの場合は、 start で指定されたバイト位置から string の最後のバイト位置までのバイト数、 漢字ストリングの場合には、 start で指定された文字位置から string の最後の文字位置までの 2 バイト文字の数です。 ただし、string が可変長ストリングで、 その長さが start 未満の場合、デフォルト値はゼロになり、 結果は空ストリングになります。 データベース・コード・ページの文脈内にあるバイト数として指定しなければなりません。 アプリケーション・コード・ページの文脈で指定してはなりません。 (たとえば、データ・タイプ VARCHAR(18)、値 'MCKNIGHT' の列 NAME の場合、 SUBSTR(NAME,10) では空ストリングが戻されます) 。
表 16 に、入力のタイプと属性ごとに、
SUBSTR 関数の結果タイプと長さがどうなるかを示しています。
ストリング引き数のデータ・タイプ | 長さ引き数 | 結果のデータ・タイプ |
---|---|---|
CHAR(A) | 定数 (l<255) | CHAR(l) |
CHAR(A) | 指定しない。start 引き数は定数 | CHAR(A-start+1) |
CHAR(A) | 定数以外 | VARCHAR(A) |
|
|
|
VARCHAR(A) | 定数 (l<255) | CHAR(l) |
VARCHAR(A) | 定数 (254<l<32673) | VARCHAR(l) |
VARCHAR(A) | 定数以外、または指定しない。 | VARCHAR(A) |
|
|
|
LONG VARCHAR | 定数 (l<255) | CHAR(l) |
|
|
|
LONG VARCHAR | 定数 (254<l<4001) | VARCHAR(l) |
LONG VARCHAR | 定数 (l>4000) | LONG VARCHAR |
LONG VARCHAR | 定数以外、または指定しない。 | LONG VARCHAR |
|
|
|
CLOB(A) | 定数 (l) | CLOB(l) |
CLOB(A) | 定数以外、または指定しない。 | CLOB(A) |
|
|
|
GRAPHIC(A) | 定数 (l<128) | GRAPHIC(l) |
GRAPHIC(A) | 指定しない。start 引き数は定数 | GRAPHIC(A-start+1) |
GRAPHIC(A) | 定数以外 | VARGRAPHIC(A) |
|
|
|
VARGRAPHIC(A) | 定数 (l<128) | GRAPHIC(l) |
VARGRAPHIC(A) | 定数 (127<l<16337) | VARGRAPHIC(l) |
VARGRAPHIC(A) | 定数以外 | VARGRAPHIC(A) |
|
|
|
LONG VARGRAPHIC | 定数 (l<128) | GRAPHIC(l) |
LONG VARGRAPHIC | 定数 (127<l<2001) | VARGRAPHIC(l) |
LONG VARGRAPHIC | 定数 (l>2000) | LONG VARGRAPHIC |
LONG VARGRAPHIC | 定数以外、または指定しない。 | LONG VARGRAPHIC |
|
|
|
DBCLOB(A) | 定数 (l) | DBCLOB(l) |
DBCLOB(A) | 定数以外、または指定しない。 | DBCLOB(A) |
|
|
|
BLOB(A) | 定数 (l) | BLOB(l) |
BLOB(A) | 定数以外、または指定しない。 | BLOB(A) |
|
|
|
string が固定長ストリングの場合に length を省略すると、 暗黙に LENGTH(string) - start + 1 が指定されます。 string が可変長ストリングの場合に length を省略すると、 暗黙にゼロまたは LENGTH(string) - start + 1 のいずれか大きい方が指定されます。
例:
SUBSTR(:NAME, :SURNAME_POS):ehp2s
値 'JAY' が戻されます。
SUBSTR(:NAME, :SURNAME_POS,1)
値 'J' が戻されます。
SELECT * FROM PROJECT WHERE SUBSTR(PROJNAME,1,10) = 'OPERATION '
定数の最後にあるスペースは、 'OPERATIONS' などの語で始まるものを除外するために必要です。
注: