SUBSTR
SUBSTR 関数は、ストリングのサブストリングを戻します。
- expression
- 結果が導き出される元になるストリングを指定する式。
式 には、任意の組み込み数値またはストリング・データ・タイプを指定できます。 数値引数は、関数を評価する前に文字ストリングにキャストされます。 数値から文字ストリングへの変換の詳細については、VARCHARを参照してください。 式 が文字ストリングの場合は、この関数の結果は文字ストリングになります。 ストリング式がグラフィック・ストリングの場合は、関数の結果は グラフィック・ストリングになります。 ストリング式が 2 進ストリングの場合は、関数の結果は 2 進ストリングになります。
式 のサブストリングは、式 のゼロ個以上の連続したバイトです。 式 がグラフィック・ストリングの場合、文字は DBCS または Unicode グラフィック文字です。 式 が文字ストリングである場合、1 文字は 1 バイトです。 1 式 が 2 進ストリングである場合、1 文字は 1 バイトです。
- start
- 式 の中の、結果の最初の文字 (またはバイト) の位置を指定する式。 式は、BIGINT、INTEGER、または SMALLINT の組み込みデータ・タイプである値を戻す必要があります。 値 1 は、結果の最初の文字が expression の最初の文字になることを示します。 負の値またはゼロは、そのストリングが始まるより前の位置を示します。また、式 の長さ属性より大きくても構いません。 (可変長ストリングの長さ属性は、そのストリングの最大長です。)
- length
- 結果の長さを指定する式。
指定する場合、長さ は、BIGINT、INTEGER、または SMALLINT の組み込みデータ・タイプの値を戻す式でなければなりません。値は、0 以上にする必要があります。
長さ を明示的に指定した場合、式 の指定されたサブストリングが必ず存在する ように、実際上は 式 の右側に必要な数のブランク文字が埋め込まれます。式 が 2 進ストリングの場合は、16 進数のゼロが埋め込み文字として使用されます。
式 が固定長ストリングの場合は、長さ を省略すると、 LENGTH(式) - 開始桁 + 1 (式 の 開始 文字 (またはバイト) から 最終文字 (またはバイト) までの文字数) が暗黙指定されます。 式 が可変長ストリングの場合に、長さ の指定を省略すると、 0 と LENGTH(式) - 開始桁 + 1 のいずれか大きい方が、 暗黙の長さの指定として使用されます。 結果の長さがゼロの場合は、結果は空ストリングになります。
結果のデータ・タイプは、式 のデータ・タイプによって異なります。
式 のデータ・タイプ | SUBSTR の場合の結果のデータ・タイプ |
---|---|
CHAR または VARCHAR | 次の場合は CHAR
|
CLOB | CLOB |
GRAPHIC または VARGRAPHIC | 次の場合は GRAPHIC
|
DBCLOB | DBCLOB |
BINARY または VARBINARY | 次の場合は BINARY
|
BLOB | BLOB |
式 が LOB でない場合、結果の 長さ属性は、長さ、開始桁、および式 の属性によって決まります。
- 長さ をゼロより大きい整数定数で明示的に指定すると、結果の長さ属性は長さ になります。
- 長さ は明示的に指定されていないが、式 が固定長ストリングであり、 開始桁 が整数定数である場合は、 結果の長さ属性が LENGTH(式) - 開始桁 + 1 になります。
それ以外のすべての場合、結果の長さ属性は式 の長さ属性と同じになります。 (式 の実際の長さが開始桁 の値より小さい場合は、サブストリングの実際の長さはゼロになります。)
引数のいずれかが NULL になる可能性がある場合、結果も NULL になる可能性があります。 引数のいずれかが NULL の場合、その結果は NULL 値です。
結果の CCSID は式 の CCSID と同じです。
例
- ホスト変数 NAME (VARCHAR(50)) の値は 'KATIE AUSTIN' で、ホスト変数 SURNAME_POS (INTEGER) の値は 7 であると想定します。
値 'AUSTIN' が戻されます。SELECT SUBSTR(:NAME, :SURNAME_POS) FROM SYSIBM.SYSDUMMY1
- 同様に、
値 'A' が戻されます。SELECT SUBSTR(:NAME, :SURNAME_POS, 1) FROM SYSIBM.SYSDUMMY1
- PROJECT 表から、
語 'OPERATION' で始まるプロジェクト名 (PROJNAME) の行を全選択します。
定数の最後にあるスペースは、 'OPERATIONS' などの語で始まるものを除外するために必要です。SELECT * FROM PROJECT WHERE SUBSTR(PROJNAME,1,10) = 'OPERATION '