カテゴリ:

文字列とバイナリ関数 (一般)

LPAD

別の文字列の文字を文字列の左に埋め込むか、別のバイナリ値のバイトをバイナリ値の左に埋め込みます。

引数(ベース)は、 パディング 引数からの文字/バイトで長さ 長さ式 を左に埋め込みます。

構文

LPAD(<base>, <length_expr> [, <pad>])

引数

ベース

これは、 VARCHAR または BINARY 値でなければなりません。

長さ式

長さは整数に評価される式でなければなりません。次を指定する必要があります。

  • 入力が VARCHAR の場合に返す UTF-8文字の数。

  • 入力が BINARY の場合に返すバイト数。

パディング

これは、 VARCHAR または BINARY 値でなければなりません。型は、 ベース パラメーターのデータ型と一致する必要があります。このパラメーターの文字(またはバイト)は、 ベース の埋め込みに使用されます。

戻り値

返される値のデータ型は、 ベース 入力値のデータ型と同じです(BINARY または VARCHAR)。

使用上の注意

  • ベース 引数が 長さ式 よりも長い場合、 ベース は長さ 長さ式 に切り捨てられます。

  • パディング 引数は、複数文字/バイト長にできます。 パディング 引数は、目的の長さ 長さ式 に達するまで結果で繰り返され、 パディング 引数の余分な文字/バイトを切り捨てます。 パディング 引数が空の場合、パディングは挿入されませんが、結果は依然として長さ 長さ_式 に切り捨てられます。

  • ベース が文字列の場合、デフォルトの パディング 文字列のデフォルトは' '(単一の空白スペース)です。 ベース がバイナリ値の場合、 パディング 引数を明示的に指定する必要があります。

照合の詳細

照合は VARCHAR 入力に適用されます。最初のパラメーターの入力データ型が BINARY の場合、照合は適用されません。

照合は構文的に受け入れられますが、照合は処理に影響しません。例えば、2文字と3文字の文字を含む言語(ハンガリー語の「dzs」、チェコ語の「ch」)では、長さ引数として2文字または3文字(1文字ではない)としてカウントされます。

The collation of the result is the same as the collation of the first input. これは、戻り値がネストされた関数呼び出しの一部として別の関数に渡される場合に役立ちます。

現在、Snowflakeでは、 ベース 引数と パディング 引数で異なる照合指定子を使用できます。ただし、返される値には照合指定子が1つしかないため、個々の照合指定子を両方とも保持することはできません。Snowflakeは、 ベース 文字列とは異なる照合を持つ パディング 文字列の使用を避けることを推奨します。

この例は、 VARCHAR および BINARY データのパディングを示しています。

テーブルを作成して入力します。

CREATE TABLE demo (v VARCHAR, b BINARY);
INSERT INTO demo (v, b) SELECT 'Hi', HEX_ENCODE('Hi');
INSERT INTO demo (v, b) SELECT '-123.00', HEX_ENCODE('-123.00');
INSERT INTO demo (v, b) SELECT 'Twelve Dollars', 
  TO_BINARY(HEX_ENCODE('Twelve Dollars'), 'HEX');

VARCHAR のパディングを示します。

SELECT v, LPAD(v, 10, ' '),             
          LPAD(v, 10, '$')
    FROM demo;
+----------------+------------------+------------------+
| V              | LPAD(V, 10, ' ') | LPAD(V, 10, '$') |
|----------------+------------------+------------------|
| Hi             |         Hi       | $$$$$$$$Hi       |
| -123.00        |    -123.00       | $$$-123.00       |
| Twelve Dollars | Twelve Dol       | Twelve Dol       |
+----------------+------------------+------------------+

BINARY のパディングを示します。

SELECT b, LPAD(b, 10, TO_BINARY(HEX_ENCODE(' '))) AS PAD_WITH_BLANK, 
          LPAD(b, 10, TO_BINARY(HEX_ENCODE('$'))) AS PAD_WITH_DOLLAR_SIGN 
    FROM demo;
+------------------------------+----------------------+----------------------+
| B                            | PAD_WITH_BLANK       | PAD_WITH_DOLLAR_SIGN |
|------------------------------+----------------------+----------------------|
| 4869                         | 20202020202020204869 | 24242424242424244869 |
| 2D3132332E3030               | 2020202D3132332E3030 | 2424242D3132332E3030 |
| 5477656C766520446F6C6C617273 | 5477656C766520446F6C | 5477656C766520446F6C |
+------------------------------+----------------------+----------------------+

次の例は、複数の文字が使用され、パディングが複数文字のパディング文字列の長さの偶数倍でない場合のパディングを示しています。

SELECT LPAD('123.50', 19, '*_');
+--------------------------+
| LPAD('123.50', 19, '*_') |
|--------------------------|
| *_*_*_*_*_*_*123.50      |
+--------------------------+