LPAD
LPAD 関数は、左側に埋め込みが行われた expression で構成されるストリングを戻します。
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 と、結果データ・タイプの最大長のうち、小さい方になります。 ここで、m は expression の長さ属性です。 詳しくは、SQL の制約を参照してください。
- length が 0 の場合、実際の長さは 0 であり、結果は空の結果ストリングになります。
- length が expression の実際の長さに等しい場合、実際の長さは、expression の長さになります。
- length が expression の実際の長さよりも小さい場合、結果は切り捨てられます。
実際の長さは、結果のデータ・タイプが可変長混合データまたは可変長 Unicode であるケースを除き、length になります。
この場合、切り捨ては常に、完全な文字を単位として行われます。
- Unicode データでは、2 バイト文字が分断されないように、実際の長さは length-1 になることがあります。
- 混合データでは、2 バイト文字や、「シフトイン」文字 (X'0F') および「シフトアウト」文字 (X'0E') で発生しうる切り捨てのために、 実際の長さは length-3 まで小さくなることがあります。
- length が expression の実際の長さより大きい場合、
結果のデータ・タイプが可変長混合データまたは可変長 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