Hitachi

Hitachi Advanced Data Binder SQLリファレンス


8.5.6 RPAD

対象データの末尾(右側)に,指定文字数となるまで,埋め込み文字列を繰り返し埋め込みます。

〈この項の構成〉

(1) 指定形式

スカラ関数RPAD::=RPAD(対象データ,文字数〔,埋め込み文字列〕)
 
  対象データ::=値式
  文字数::=値式
  埋め込み文字列::=値式

(2) 指定形式の説明

対象データ

文字列の埋め込みを行う対象データを指定します。

指定規則を次に示します。

  • 対象データは,値式の形式で指定します。値式については,「7.21 値式」を参照してください。

  • 対象データには,CHAR型またはVARCHAR型のデータを指定してください。

  • 対象データには,?パラメタを単独で指定できません。

文字数

文字列を埋め込んだ結果の文字列の文字数を指定します。

指定規則を次に示します。

  • 文字数は,値式の形式で指定します。値式については,「7.21 値式」を参照してください。

  • 文字数には,INTEGERBIGINT型,またはSMALLINT型のデータを指定してください。

  • 文字数に?パラメタを単独で指定した場合,?パラメタに仮定されるデータ型はINTEGER型になります。

埋め込み文字列

対象データの末尾(右側)に埋め込む文字列を指定します。

指定規則を次に示します。

  • 埋め込み文字列は,値式の形式で指定します。値式については,「7.21 値式」を参照してください。

  • 埋め込み文字列には,CHAR型またはVARCHAR型のデータを指定してください。

  • 埋め込み文字列を省略した場合,埋め込み文字列に半角空白が仮定されます。

  • 埋め込み文字列に?パラメタを単独で指定した場合,?パラメタに仮定されるデータ型はVARCHAR(32000)になります。

スカラ関数RPADの実行結果の例を次に示します。

(例)

C1列のデータの末尾(右側)に,全体の文字列が10文字になるまで,文字列'xyz'を繰り返し埋め込みます。

RPAD("C1",10,'xyz') → 'ABCxyzxyzx'

C1列はVARCHAR(20)の列で,文字列'ABC'が格納されています。

(3) 規則

  1. 実行結果のデータ型とデータ長を次の表に示します。

    表8‒16 スカラ関数RPADの実行結果のデータ型とデータ長

    対象データのデータ型とデータ長

    実行結果のデータ型とデータ長

    CHAR(n)

    VARCHAR(n)

    VARCHAR(n)

    (凡例)n:対象データの最大長

  2. 実行結果の値は,非ナル値制約なし(ナル値を許す)となります。

  3. 次のどちらかの条件を満たす場合は,実行結果はナル値になります。

    • 対象データ,文字数,または埋め込み文字列がナル値の場合

    • 文字数に負の値を指定した場合

  4. 埋め込み文字列が実長0バイトまたは実長0文字のデータの場合,文字列の埋め込みは行われません。

  5. 対象データの文字数が,文字数の指定値より大きい場合,対象データの文字列を先頭から指定文字数分返します。

    (例)RPAD('ABCDE',3,'xy') → 'ABC'

  6. 実行結果のデータ長では,指定した文字数の文字列を表現できない場合,埋め込み文字列の埋め込みを途中で打ち切ります。そのため,実行結果の文字数が,指定した文字数と異なることがあります。指定した文字数分の文字列を取得したい場合は,スカラ関数CASTを使用して対象データのデータ長を変更してください。

    (例)

    C1列の値とデータ型は次のとおりで,使用している文字コードはUnicode(UTF-8)とします。

    C1列の値:[図データ] [図データ]

    C1列のデータ型:VARCHAR(10)

    RPAD("C1",5,'[図データ] [図データ] [図データ]') → '[図データ] [図データ] [図データ]'

    上記の例の場合,RPADの実行結果のデータ型はVARCHAR(10)になります。1文字が3バイトのため,実行結果の文字数が,指定した文字数(5文字)になりません。

    RPAD(CAST("C1" AS VARCHAR(15)),5,'[図データ] [図データ] [図データ]') → '[図データ] [図データ] [図データ] [図データ] [図データ]'

    上記の例の場合,RPADの実行結果のデータ型はVARCHAR(15)になります。1文字が3バイトのため,実行結果の文字数が,指定した文字数(5文字)になります。

(4) 例題

例題

T1C1列はVARCHAR(8)の列です。C1列の文字データのうち,8文字未満の文字データの末尾に'0'を埋め込み8文字にそろえます。

SELECT RPAD("C1",8,'0') FROM "T1"

[図データ]