SUBSTR

SUBSTR 関数は、ストリングのサブストリングを戻します。

構文図を読む構文図をスキップする
>>-SUBSTR--(--expression--,--start--+-----------+--)-----------><
                                    '-,--length-'      

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
  • 長さ がゼロより大きい整数定数で明示的に指定されている。
  • 長さ は明示的に指定されていないが、 が固定長ストリングであり、 開始桁 が整数定数である。
VARCHAR (それ以外のすべての場合)
CLOB CLOB
GRAPHIC または VARGRAPHIC 次の場合は GRAPHIC
  • 長さ がゼロより大きい整数定数で明示的に指定されている。
  • 長さ は明示的に指定されていないが、 が固定長ストリングであり、 開始桁 が整数定数である。
VARGRAPHIC (それ以外のすべての場合)。
DBCLOB DBCLOB
BINARY または VARBINARY 次の場合は BINARY
  • 長さ がゼロより大きい整数定数で明示的に指定されている。
  • 長さ は明示的に指定されていないが、 が固定長ストリングであり、 開始桁 が整数定数である。
VARBINARY (それ以外のすべての場合)。
BLOB BLOB

が LOB でない場合、結果の 長さ属性は、長さ開始桁、および の属性によって決まります。

  • 長さ をゼロより大きい整数定数で明示的に指定すると、結果の長さ属性は長さ になります。
  • 長さ は明示的に指定されていないが、 が固定長ストリングであり、 開始桁 が整数定数である場合は、 結果の長さ属性が LENGTH() - 開始桁 + 1 になります。

それ以外のすべての場合、結果の長さ属性は の長さ属性と同じになります。 ( の実際の長さが開始桁 の値より小さい場合は、サブストリングの実際の長さはゼロになります。)

引数のいずれかが NULL になる可能性がある場合、結果も NULL になる可能性があります。 引数のいずれかが NULL の場合、その結果は NULL 値です。

結果の CCSID は の CCSID と同じです。

  • ホスト変数 NAME (VARCHAR(50)) の値は 'KATIE AUSTIN' で、ホスト変数 SURNAME_POS (INTEGER) の値は 7 であると想定します。
      SELECT SUBSTR(:NAME, :SURNAME_POS)
        FROM SYSIBM.SYSDUMMY1
    値 'AUSTIN' が戻されます。
  • 同様に、
      SELECT SUBSTR(:NAME, :SURNAME_POS, 1)
        FROM SYSIBM.SYSDUMMY1
    値 'A' が戻されます。
  • PROJECT 表から、 語 'OPERATION' で始まるプロジェクト名 (PROJNAME) の行を全選択します。
      SELECT *
        FROM PROJECT
        WHERE SUBSTR(PROJNAME,1,10) = 'OPERATION '
    定数の最後にあるスペースは、 'OPERATIONS' などの語で始まるものを除外するために必要です。
1 SUBSTR 関数は混合データ・ストリングを受け入れます。 ただし、SUBSTR は厳密なバイト・カウントに基づいて演算を行うため、結果は 必ずしも適切な形式の混合データ・ストリングにはなりません。