- Categorias:
LPAD¶
Faz um preenchimento esquerdo (Left Padding) em uma cadeia de caracteres, com caracteres de outra cadeia, ou faz um preenchimento esquerdo em um valor binário, com bytes de outro valor binário.
O argumento (base
) é preenchido à esquerda do comprimento length_expr
com caracteres/bytes do argumento pad
.
Sintaxe¶
LPAD(<base>, <length_expr> [, <pad>])
Argumentos¶
base
Este deve ser um valor
VARCHAR
ouBINARY
.length_expr
O comprimento deve ser uma expressão que avalia como um número inteiro. Deve especificar:
O número de caracteres UTF-8 a retornar se a entrada for
VARCHAR
.O número de bytes a retornar se a entrada for
BINARY
.
pad
Este deve ser um valor
VARCHAR
ouBINARY
. O tipo deve corresponder ao tipo de dados do parâmetrobase
. Os caracteres (ou bytes) deste parâmetro são usados para preencher obase
.
Retornos¶
O tipo de dados do valor retornado é o mesmo que o tipo de dados do valor de entrada base
(BINARY
ou VARCHAR
).
Notas de uso¶
Se o argumento
base
for mais longo quelength_expr
, então obase
é truncado no comprimentolength_expr
.O argumento
pad
pode ser de múltiplos caracteres/bytes. O argumentopad
é repetido no resultado até atingir a extensão desejadalength_expr
, truncando quaisquer caracteres/bytes supérfluos no argumentopad
. Se o argumentopad
estiver vazio, nenhum preenchimento é inserido, mas o resultado ainda é truncado no comprimentolength_expr
.Quando
base
é uma cadeia de caracteres, o padrão da cadeia de caracterespad
é ‘ ’ (um único espaço em branco). Quandobase
é um valor binário, o argumentopad
deve ser fornecido explicitamente.
Detalhes do agrupamento¶
O agrupamento se aplica às entradas VARCHAR
. O agrupamento não se aplica se o tipo de dados de entrada do primeiro parâmetro for BINARY
.
Embora o agrupamento seja aceito sintaticamente, os agrupamentos não têm impacto no processamento. Por exemplo, idiomas com letras de dois e três caracteres (por exemplo, «dzs» em húngaro, «ch» em tcheco) ainda contam esses como dois ou três caracteres (não um caractere) para o argumento da extensão.
The collation of the result is the same as the collation of the first input. Isso pode ser útil se o valor retornado for passado para outra função como parte de chamadas de funções aninhadas.
Atualmente, o Snowflake permite que os argumentos base
e pad
tenham diferentes especificadores de agrupamento. Entretanto, os especificadores de agrupamento individuais não podem ser mantidos porque o valor retornado terá apenas um especificador de agrupamento. Snowflake recomenda que os usuários evitem o uso de cadeias de caracteres pad
que tenham um agrupamento diferente da cadeia de caracteres base
.
Exemplos¶
Este exemplo mostra o preenchimento de dados VARCHAR
e BINARY
:
Criar e preencher uma tabela:
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');Demonstrar preenchimento de
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 | +----------------+------------------+------------------+Demonstrar preenchimento de
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 | +------------------------------+----------------------+----------------------+
Este exemplo mostra o preenchimento quando múltiplos caracteres são usados e quando o preenchimento não é um múltiplo sequer do comprimento da cadeia de caracteres de preenchimento de múltiplos caracteres:
SELECT LPAD('123.50', 19, '*_'); +--------------------------+ | LPAD('123.50', 19, '*_') | |--------------------------| | *_*_*_*_*_*_*123.50 | +--------------------------+