SUBSTRING
SUBSTRING 関数は、ストリングのサブストリングを戻します。
>>-+-SUBSTRING--(--expression--,--start--+-----------+--)-------+->< | '-,--length-' | '-SUBSTRING--(--expression--FROM--start--+--------------+--)-' '- FOR--length-'
- expression
- 結果が導き出される元になるストリングを指定する式。
式 には、任意の組み込み数値またはストリング・データ・タイプを指定できます。 数値引数は、関数を評価する前に文字ストリングにキャストされます。 数値から文字ストリングへの変換の詳細については、VARCHARを参照してください。 式 が文字ストリングの場合は、この関数の結果は文字ストリングになります。 ストリング式がグラフィック・ストリングの場合は、関数の結果は グラフィック・ストリングになります。 ストリング式が 2 進ストリングの場合は、関数の結果は 2 進ストリングになります。
式 のサブストリングは、式 のゼロ個以上の連続したバイトです。 式 がグラフィック・ストリングの場合、文字は DBCS または Unicode グラフィック文字です。 式 が文字ストリングである場合、1 文字は 1 バイト以上の文字です。 式 が 2 進ストリングである場合、1 文字は 1 バイトです。
- start
- 式 の中の、結果の最初の文字 (またはバイト) の位置を指定する式。 式は、BIGINT、INTEGER、または SMALLINT の組み込みデータ・タイプである値を戻す必要があります。 値 1 は、結果の最初の文字が expression の最初の文字になることを示します。 負の値またはゼロは、そのストリングが始まるより前の位置を示します。また、式 の長さ属性より大きくても構いません。 (可変長ストリングの長さ属性は、そのストリングの最大長です。)
- length
- 結果のサブストリングの実際の最大長を指定する式。
指定する場合、長さ は、BIGINT、INTEGER、または SMALLINT の組み込みデータ・タイプの値を戻す式でなければなりません。値は、0 以上にする必要があります。
長さ を明示的に指定した場合、埋め込みは行われません。
式 が固定長ストリングの場合は、長さ を省略すると、 LENGTH(式) - 開始桁 + 1 (式 の 開始 文字 (またはバイト) から 最終文字 (またはバイト) までの文字数) が暗黙指定されます。 式 が可変長ストリングの場合に、長さ の指定を省略すると、 0 と LENGTH(式) - 開始桁 + 1 のいずれか大きい方が、 暗黙の長さの指定として使用されます。 結果の長さがゼロの場合は、結果は空ストリングになります。
結果のデータ・タイプは、式 のデータ・タイプによって異なります。
式 のデータ・タイプ | SUBSTRING の場合の結果のデータ・タイプ |
---|---|
CHAR または VARCHAR | VARCHAR |
CLOB | CLOB |
GRAPHIC または VARGRAPHIC | VARGRAPHIC |
DBCLOB | DBCLOB |
BINARY または VARBINARY | VARBINARY |
BLOB | BLOB |
結果の長さ属性は、式 の長さ属性と同じになります。 (式 の実際の長さが開始桁 の値より小さい場合は、サブストリングの実際の長さはゼロになります。)
引数のいずれかが NULL になる可能性がある場合、結果も NULL になる可能性があります。 引数のいずれかが NULL の場合、その結果は NULL 値です。
結果の CCSID は式 の CCSID と同じです。
例
- PROJECT 表から、
語 'OPERATION' で始まるプロジェクト名 (PROJNAME) の行を全選択します。
定数の最後にあるスペースは、 'OPERATIONS' などの語で始まるものを除外するために必要です。SELECT * FROM PROJECT WHERE SUBSTRING(PROJNAME,1,10) = 'OPERATION '
- FIRSTNAME は T1 の VARCHAR(12) の列であり、Unicode UTF-8 でエンコードされるものと仮定します。その値の 1 つが 6 文字ストリング 'Jürgen' です。
これが FIRSTNAME の値の場合、
値 'Jü' (x'4AC3BC') と 'Jô' (x'4AC3') が戻ります。SELECT SUBSTRING(FIRSTNAME, 1,2), SUBSTR(FIRSTNAME, 1,2) FROM T1