LPAD

LPAD 関数は、左側に埋め込みが行われた expression で構成されるストリングを戻します。

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

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

expression
結果が導き出される元になるストリングを指定する式。

expression は、組み込みストリング、数値、または日時のデータ・タイプでなければなりません。 数値引数または日時引数は、 関数を評価する前に、現行サーバーでデフォルト SBCS CCSID である CCSID を使用して VARCHAR にキャストされます。数値または日時からさまざまな文字ストリングへの変換について詳しくは、VARCHAR を参照してください。

length
結果の長さを指定する式。 式は、組み込み数値、文字ストリング、またはグラフィック・ストリングのデータ・タイプの値を戻す必要があります。 式のデータ・タイプが INTEGER でない場合、その値は関数を評価する前に暗黙的に INTEGER にキャストされます。 値はゼロであるか、n 以下の正整数である必要があります。ここで、n は結果のデータ・タイプの最大長です。 詳しくは、SQL の制約を参照してください。

expression がグラフィック・ストリングの場合、length は DBCS または Unicode グラフィック文字の数を示します。 expression が文字ストリングの場合、length は文字数を示します (1 文字が 1 バイトまたは複数バイトで構成されることもあります)。 expression がバイナリー・ストリングの場合、length はバイト数を示します。

pad
埋め込むストリングを指定する式。この式は、組み込みデータ・タイプであるストリング、数値、日時のいずれかの値を戻す必要があります。値が数値または日時のデータ・タイプの場合、 関数を評価する前に、現行サーバーでデフォルト SBCS CCSID である CCSID を使用して VARCHAR に暗黙的にキャストされます。
pad が指定されていない場合、埋め込み文字は次のように設定されます。
  • 文字ストリングおよびグラフィック・ストリングの場合、expression のデータ・タイプと CCSID に基づいた 1 バイト、2 バイト、 UTF-16、または UTF-8 のブランク文字。1
  • バイナリー・ストリングの場合、16 進のゼロ。

expression の値と pad の値は、互換性のあるデータ・タイプである必要があります。pad の CCSID が expression の CCSID と異なる場合、pad 値は expression の CCSID に変換されます。 データ・タイプの互換性についての詳細は、割り当ておよび比較を参照してください。

結果のデータ・タイプは、 のデータ・タイプによって異なります。

のデータ・タイプ LPAD の場合の結果のデータ・タイプ
CHAR や VARCHAR または数値や日時 VARCHAR
CLOB CLOB
GRAPHIC または VARGRAPHIC VARGRAPHIC
DBCLOB DBCLOB
BINARY または VARBINARY VARBINARY
BLOB BLOB

結果の長さ属性は length によって決まります。 長さ をゼロより大きい整数定数で明示的に指定すると、結果の長さ属性は長さ になります。length にゼロの整数定数を明示的に指定すると、結果の長さ属性は 1 になります。 length を式で指定すると、結果の長さ属性は、m+100 と、結果データ・タイプの最大長のうち、小さい方になります。 ここで、mexpression の長さ属性です。 詳しくは、SQL の制約を参照してください。

結果の実際の長さは 、length から決定されます。
  • length が 0 の場合、実際の長さは 0 であり、結果は空の結果ストリングになります。
  • lengthexpression の実際の長さに等しい場合、実際の長さは、expression の長さになります。
  • lengthexpression の実際の長さよりも小さい場合、結果は切り捨てられます。 実際の長さは、結果のデータ・タイプが可変長混合データまたは可変長 Unicode であるケースを除き、length になります。 この場合、切り捨ては常に、完全な文字を単位として行われます。
    • Unicode データでは、2 バイト文字が分断されないように、実際の長さは length-1 になることがあります。
    • 混合データでは、2 バイト文字や、「シフトイン」文字 (X'0F') および「シフトアウト」文字 (X'0E') で発生しうる切り捨てのために、 実際の長さは length-3 まで小さくなることがあります。
  • lengthexpression の実際の長さより大きい場合、 結果のデータ・タイプが可変長混合データまたは可変長 Unicode で pad に 2 バイト文字が含まれるケースを除き、実際の長さは length になります。 この場合、埋め込みは常に、完全な文字を単位として行われます。
    • Unicode データでは、2 バイト文字が分断されないように、実際の長さは length-1 になることがあります。
    • 混合データでは、2 バイト文字や、「シフトイン」文字 (X'0F') および「シフトアウト」文字 (X'0E') で発生しうる切り捨てのために、 実際の長さは length-3 まで小さくなることがあります。また、その結果の「継ぎ目に」余分なシフト・コードが入ることはありません。 したがって、pad が「シフトイン文字」文字 (X'0F') で終わるストリングで、expression が「シフトアウト」文字 (X'0E') で始まる場合、これらの 2 バイト (pad のシフトイン文字と expression のシフトアウト文字) は結果から除去されます。

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

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

  • 例 1: NAME が VARCHAR(15) の列で、値「Chris」、「Meg」、および「Jeff」を含んでいるものとします。次の照会では、値の左側にピリオドが完全に埋め込まれます。
    SELECT LPAD(NAME,15,'.' ) AS NAME FROM T1;  
    これは、以下のものを戻します。
    NAME 
    --------------- 
    ..........Chris
    ............Meg 
    ...........Jeff
  • 例 2: NAME が VARCHAR(15) の列で、値「Chris」、「Meg」、および「Jeff」を含んでいるものとします。次の照会では、長さ 5 までのみ各値にピリオドが埋め込まれます。
    SELECT LPAD(NAME,5,'.' ) AS NAME FROM T1;
    これは、以下のものを戻します。
    NAME 
    ----- 
    Chris 
    ..Meg 
    .Jeff
  • 例 3: NAME が CHAR(15) の列で、値「Chris」、「Meg」、および「Jeff」を含んでいるものとします。NAME は固定長の文字フィールドで、既にブランクが埋め込まれているため、LPAD 関数は埋め込みを行いません。 ただし、結果の長さが 5 であるため、列の切り捨てが行われます。
    SELECT LPAD(NAME,5,'.' ) AS NAME FROM T1;
    これは、以下のものを戻します。
    NAME 
    ----- 
    Chris 
    Meg 
    Jeff
  • 例 4: NAME が VARCHAR(15) の列で、値「Chris」、「Meg」、および「Jeff」を含んでいるものとします。場合によって、指定された埋め込みストリングの部分的なインスタンスが戻されます。
    SELECT LPAD(NAME,15,'123' ) AS NAME FROM T1;
    これは、以下のものを戻します。
    NAME 
    --------------- 
    1231231231Chris 
    123123123123Meg 
    12312312312Jeff
  • 例 5: NAME が VARCHAR(15) の列で、値「Chris」、「Meg」、および「Jeff」を含んでいるものとします。「Chris」には切り捨て、 「Meg」には埋め込みが行われ、「Jeff」は変更されません。
    SELECT LPAD(NAME,4,'.' ) AS NAME FROM T1;
    これは、以下のものを戻します。
    NAME 
    ---- 
    Chri 
    .Meg 
    Jeff
1 UTF-16 または UCS-2 では、 コード・ポイント X'0020' および X'3000' でブランク文字を定義しています。 データベース・マネージャーは、コード・ポイント X'0020' の位置にあるブランクを埋め込みに使用します。 データベース・マネージャーは、UTF-8 でコード・ポイント X'20' のブランクを埋め込みます。