RPAD スカラー関数

RPAD 関数は、右側に pad またはブランクが埋め込まれた string-expression で構成されるストリングを戻します。

構文図を読む構文図をスキップするRPAD(string-expression, integer, pad)

スキーマは SYSIBM です。

RPAD 関数は、string-expression 内の先行ブランクまたは末尾ブランクを有効として扱います。埋め込みは、string-expression の実際の長さが integer より短く、pad が空ストリングでない場合のみ行われます。

string-expression
ソース・ストリングを指定する式。式は、組み込み文字ストリング、グラフィック・ストリング、BINARY、VARBINARY、数値、日時のいずれかのデータ・タイプの値を戻す必要があります。CLOB および DBCLOB は、暗黙的キャストを介してサポートされます。 CLOB の値は、関数の評価の前に VARCHAR に暗黙的にキャストされます。 DBCLOB の値は、関数の評価の前に VARGRAPHIC に暗黙的にキャストされます。 string-expression 値のデータ・タイプが数値または日時の場合、関数の評価の前にその値が VARCHAR に暗黙的にキャストされます。 string-expression のデータ・タイプを BLOB にすることはできません (SQLSTATE 42815)。
integer
string-expression のストリング単位で結果の実際の長さを指定する式。式は組み込み数値、CHAR、または VARCHAR データ・タイプの値を戻す必要があります。 Unicode データベースでは、 式は GRAPHIC または VARGRAPHIC のデータ・タイプにすることもできます。CHAR、VARCHAR、GRAPHIC、および VARGRAPHIC は、暗黙的キャストを介してサポートされます。 INTEGER タイプでない式は、関数の評価の前に INTEGER にキャストされます。 値は、ゼロ、または string-expression のストリング単位の結果データ・タイプの最大長以下の正整数でなければなりません。
pad
埋め込むストリングを指定する式。式は、組み込み文字ストリング、グラフィック・ストリング、BINARY、VARBINARY、数値、日時のいずれかのデータ・タイプの値を戻す必要があります。CLOB および DBCLOB は、暗黙的キャストを介してサポートされます。CLOB の値は、関数の評価の前に VARCHAR に暗黙的にキャストされます。 DBCLOB の値は、関数の評価の前に VARGRAPHIC に暗黙的にキャストされます。 pad 値のデータ・タイプが数値または日時の場合、関数の評価の前にその値が VARCHAR に暗黙的にキャストされます。 pad のデータ・タイプを BLOB にすることはできません (SQLSTATE 42815)。
pad が指定されていない場合、埋め込み文字は次のように決定されます。
  • string-expression が文字ストリングの場合は、SBCS ブランク文字。
  • string-expression が GRAPHIC ストリングの場合は、表意文字のブランク文字。 EUC データベースの GRAPHIC ストリングの場合は、X'3000' が使用されます。 Unicode データベースの GRAPHIC ストリングの場合は、X'0020' が使用されます。
  • string-expression がバイナリー・ストリングであれば 16 進数のゼロ (X'00')。
結果のデータ・タイプは、次のように string-expression のデータ・タイプによって決まります。
  • データ・タイプが VARCHAR または CHAR の場合、VARCHAR
  • データ・タイプが VARGRAPHIC または GRAPHIC の場合、VARGRAPHIC
  • データ・タイプが VARBINARY または BINARY の場合、VARBINARY

この関数の結果は、可変長ストリングで、ストリング単位およびコード・ページは string-expression と同じになります。string-expression の値と pad の値は、互換性のあるデータ・タイプである必要があります。 string-expressionpad のコード・ページが異なる場合は、padstring-expression のコード・ページに変換されます。string-expression または pad のどちらかが FOR BIT DATA またはバイナリーの場合は、文字変換は行われません。

この結果の長さ属性は、integer の値が、関数呼び出しを含む SQL ステートメントのコンパイル時に使用可能か(例えば、定数または定数式として指定されている場合)、または関数の実行時にのみ使用可能か (例えば、関数呼び出しの結果として指定されている場合) によって異なります。 値が、関数呼び出しを含む SQL ステートメントのコンパイル時に使用可能な場合に、integer がゼロより大きいと、結果の長さ属性は integer になります。 integer がゼロであると、この結果の長さ属性は 1 になります。値が、関数の実行時にのみ使用可能な場合は、この結果の長さ属性は、次の表に従って決定されます。
表 1. 関数の実行時にのみ integer が使用可能である場合の結果の長さの決定
string-expression のデータ・タイプ 結果データ・タイプの長さ
CHAR(n) または VARCHAR(n)、BINARY(n) または VARBINARY(n) n+100 と 32 672 のうちの最小値
GRAPHIC(n) または VARGRAPHIC(n) n+100 と 16 336 のうちの最小値
ストリング単位が CODEUNITS32 の CHAR(n) または VARCHAR(n) または GRAPHIC(n) または VARGRAPHIC(n) (Unicode データベースのみ) n+100 と 8 168 のうちの最小値

結果の実際の長さは integer から決定されます。 integer が 0 の場合、実際の長さは 0 で、結果は空の結果ストリングになります。 integerstring-expression の実際の長さよりも小さい場合、実際の長さは integer で、結果は切り捨てられます。

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

  • 例 1: NAME が値 Chris、Meg、 および Jeff を含む VARCHAR(15) 列であると仮定します。次の照会では、値の右側にピリオドが完全に埋め込まれます。
    SELECT RPAD(NAME,15,'.' ) AS NAME FROM T1;
    これは、以下のものを戻します。
    NAME
    ---------------
    Chris..........
    Meg............
    Jeff...........
  • 例 2: NAME が値 Chris、Meg、 および Jeff を含む VARCHAR(15) 列であると仮定します。次の照会では、値の右側に pad が完全に埋め込まれます (場合によって、指定された埋め込みストリングの部分的なインスタンスがあることに注意してください)。
    SELECT RPAD(NAME,15,'123' ) AS NAME FROM T1;
    これは、以下のものを戻します。
    NAME 
    --------------- 
    Chris1231231231 
    Meg123123123123 
    Jeff12312312312
  • 例 3: NAME が値 Chris、Meg、 および Jeff を含む VARCHAR(15) 列であると仮定します。次の照会では、長さ 5 までのみ各値にピリオドが埋め込まれます。
    SELECT RPAD(NAME,5,'.' ) AS NAME FROM T1;
    これは、以下のものを戻します。
    NAME 
    ----- 
    Chris 
    Meg.. 
    Jeff.
  • 例 4: NAME が、値 Chris、Meg、および Jeff を含む CHAR(15) 列であると仮定します。 RTRIM の結果は、ブランクが取り除かれた可変長ストリングです。
    SELECT RPAD(RTRIM(NAME),15,'.' ) AS NAME FROM T1;
    これは、以下のものを戻します。
    NAME 
    --------------- 
    Chris.......... 
    Meg............ 
    Jeff...........
  • 例 5: NAME が値 Chris、Meg、 および Jeff を含む VARCHAR(15) 列であると仮定します。Chris では切り捨てが行われ、Meg では埋め込みが行われ、Jeff は変更されないことに注意してください。
    SELECT RPAD(NAME,4,'.' ) AS NAME FROM T1;
    これは、以下のものを戻します。
    NAME 
    ---- 
    Chri 
    Meg. 
    Jeff