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) の行を全選択します。
      SELECT *
        FROM PROJECT
        WHERE SUBSTRING(PROJNAME,1,10) = 'OPERATION '
    定数の最後にあるスペースは、 'OPERATIONS' などの語で始まるものを除外するために必要です。
  • FIRSTNAME は T1 の VARCHAR(12) の列であり、Unicode UTF-8 でエンコードされるものと仮定します。その値の 1 つが 6 文字ストリング 'Jürgen' です。 これが FIRSTNAME の値の場合、
      SELECT SUBSTRING(FIRSTNAME, 1,2), SUBSTR(FIRSTNAME, 1,2)
        FROM T1
    値 'Jü' (x'4AC3BC') と 'Jô' (x'4AC3') が戻ります。