8.5.6 RPAD
対象データの末尾(右側)に,指定文字数となるまで,埋め込み文字列を繰り返し埋め込みます。
- 〈この項の構成〉
(1) 指定形式
スカラ関数RPAD::=RPAD(対象データ,文字数〔,埋め込み文字列〕) 対象データ::=値式 文字数::=値式 埋め込み文字列::=値式
(2) 指定形式の説明
- 対象データ:
-
文字列の埋め込みを行う対象データを指定します。
指定規則を次に示します。
-
対象データは,値式の形式で指定します。値式については,「7.21 値式」を参照してください。
-
対象データには,CHAR型またはVARCHAR型のデータを指定してください。
-
対象データには,?パラメタを単独で指定できません。
-
- 文字数:
-
文字列を埋め込んだ結果の文字列の文字数を指定します。
指定規則を次に示します。
-
文字数は,値式の形式で指定します。値式については,「7.21 値式」を参照してください。
-
文字数には,INTEGER型,BIGINT型,またはSMALLINT型のデータを指定してください。
-
文字数に?パラメタを単独で指定した場合,?パラメタに仮定されるデータ型はINTEGER型になります。
-
- 埋め込み文字列:
-
対象データの末尾(右側)に埋め込む文字列を指定します。
指定規則を次に示します。
-
埋め込み文字列は,値式の形式で指定します。値式については,「7.21 値式」を参照してください。
-
埋め込み文字列には,CHAR型またはVARCHAR型のデータを指定してください。
-
埋め込み文字列を省略した場合,埋め込み文字列に半角空白が仮定されます。
-
埋め込み文字列に?パラメタを単独で指定した場合,?パラメタに仮定されるデータ型はVARCHAR(32000)になります。
-
スカラ関数RPADの実行結果の例を次に示します。
- (例)
-
C1列のデータの末尾(右側)に,全体の文字列が10文字になるまで,文字列'xyz'を繰り返し埋め込みます。
RPAD("C1",10,'xyz') → 'ABCxyzxyzx'
C1列はVARCHAR(20)の列で,文字列'ABC'が格納されています。
(3) 規則
-
実行結果のデータ型とデータ長を次の表に示します。
表8‒16 スカラ関数RPADの実行結果のデータ型とデータ長 対象データのデータ型とデータ長
実行結果のデータ型とデータ長
CHAR(n)
VARCHAR(n)
VARCHAR(n)
(凡例)n:対象データの最大長
-
実行結果の値は,非ナル値制約なし(ナル値を許す)となります。
-
次のどちらかの条件を満たす場合は,実行結果はナル値になります。
-
対象データ,文字数,または埋め込み文字列がナル値の場合
-
文字数に負の値を指定した場合
-
-
埋め込み文字列が実長0バイトまたは実長0文字のデータの場合,文字列の埋め込みは行われません。
-
対象データの文字数が,文字数の指定値より大きい場合,対象データの文字列を先頭から指定文字数分返します。
(例)RPAD('ABCDE',3,'xy') → 'ABC'
-
実行結果のデータ長では,指定した文字数の文字列を表現できない場合,埋め込み文字列の埋め込みを途中で打ち切ります。そのため,実行結果の文字数が,指定した文字数と異なることがあります。指定した文字数分の文字列を取得したい場合は,スカラ関数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) 例題
- 例題
-
表T1のC1列はVARCHAR(8)の列です。C1列の文字データのうち,8文字未満の文字データの末尾に'0'を埋め込み8文字にそろえます。
SELECT RPAD("C1",8,'0') FROM "T1"