- カテゴリ:
文字列とバイナリ関数 (一般)
LPAD¶
別の文字列の文字を文字列の左に埋め込むか、別のバイナリ値のバイトをバイナリ値の左に埋め込みます。
引数(base
)は、 length_expr
引数からの文字/バイトで長さ pad
を左にパディングします。
構文¶
LPAD(<base>, <length_expr> [, <pad>])
引数¶
base
これは、
VARCHAR
またはBINARY
値でなければなりません。length_expr
長さは整数に評価される式でなければなりません。次を指定する必要があります。
入力が
VARCHAR
の場合に返す UTF-8文字の数。入力が
BINARY
の場合に返すバイト数。
pad
これは、
VARCHAR
またはBINARY
値でなければなりません。型は、base
パラメーターのデータ型と一致する必要があります。このパラメーターの文字(またはバイト)は、base
の埋め込みに使用されます。
戻り値¶
返される値のデータ型は、 base
入力値のデータ型と同じです(BINARY
または VARCHAR
)。
使用上の注意¶
base
引数がlength_expr
よりも長い場合、base
は長さlength_expr
に切り捨てられます。pad
引数は、複数文字/バイト長にできます。pad
引数は、目的の長さlength_expr
に達するまで結果で繰り返され、pad
引数の余分な文字/バイトは切り捨てられます。pad
引数が空の場合、パディングは挿入されませんが、結果は依然として長さlength_expr
に切り捨てられます。base
が文字列の場合、デフォルトのpad
文字列のデフォルトは' '(単一の空白スペース)です。base
がバイナリ値の場合は、pad
引数を明示的に指定する必要があります。
照合の詳細¶
照合は 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では、 base
引数と pad
引数で異なる照合指定子を使用できます。ただし、戻り値には照合指定子が1つしかないため、個々の照合指定子を両方とも保持することはできません。Snowflakeは、 pad
文字列とは異なる照合を持つ base
文字列の使用をユーザーが避けることをお勧めします。
例¶
この例は、 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 ORDER BY v; +----------------+------------------+------------------+ | V | LPAD(V, 10, ' ') | LPAD(V, 10, '$') | |----------------+------------------+------------------| | -123.00 | -123.00 | $$$-123.00 | | Hi | Hi | $$$$$$$$Hi | | 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 ORDER BY b; +------------------------------+----------------------+----------------------+ | B | PAD_WITH_BLANK | PAD_WITH_DOLLAR_SIGN | |------------------------------+----------------------+----------------------| | 2D3132332E3030 | 2020202D3132332E3030 | 2424242D3132332E3030 | | 4869 | 20202020202020204869 | 24242424242424244869 | | 5477656C766520446F6C6C617273 | 5477656C766520446F6C | 5477656C766520446F6C | +------------------------------+----------------------+----------------------+
次の例は、複数の文字が使用され、パディングが複数文字のパディング文字列の長さの偶数倍でない場合のパディングを示しています。
SELECT LPAD('123.50', 19, '*_'); +--------------------------+ | LPAD('123.50', 19, '*_') | |--------------------------| | *_*_*_*_*_*_*123.50 | +--------------------------+