- Catégories :
LPAD¶
Ajoute des caractères d’une autre chaîne à gauche d’une chaîne, ou ajoute des octets issus d’une autre valeur binaire à gauche d’une valeur binaire.
L’argument (base
) est complété à gauche avec expr_longueur
avec les caractères/octets de l’argument remplissage
.
Syntaxe¶
LPAD(<base>, <length_expr> [, <pad>])
Arguments¶
base
Cela doit être une valeur
VARCHAR
ouBINARY
.expr_longueur
La longueur doit être une expression dont le résultat est un entier. Elle convient d’indiquer :
Le nombre de caractères UTF-8 à renvoyer si l’entrée est
VARCHAR
.Le nombre d’octets à renvoyer si l’entrée est
BINARY
.
remplissage
Cela doit être une valeur
VARCHAR
ouBINARY
. Le type doit correspondre au type de données du paramètrebase
. Les caractères (ou octets) de ce paramètre sont utilisés pour remplir labase
.
Renvoie¶
Le type de données de la valeur renvoyée est identique à celui de la valeur d’entrée base
(BINARY
ou VARCHAR
).
Notes sur l’utilisation¶
Si l’argument
base
est plus long queexpr_longueur
, alors labase
est tronquée à la longueurexpr_longueur
.L’argument
remplissage
peut comporter plusieurs caractères/octets. L’argumentremplissage
est répété dans le résultat jusqu’à ce que la longueur souhaitéeexpr_longueur
soit atteinte, tronquant les caractères/octets superflus de l’argumentremplissage
. Si l’argumentremplissage
est vide, aucun remplissage n’est inséré, mais le résultat est toujours tronqué à la longueurexpr_longueur
.Lorsque
base
est une chaîne, la valeur par défaut deremplissage
est « » (un seul espace vide). Lorsquebase
est une valeur binaire, l’argumentremplissage
doit être fourni explicitement.
Détails du classement¶
Le classement s’applique aux entrées VARCHAR
. Le classement ne s’applique pas si le type de données en entrée du premier paramètre est BINARY
.
Bien que les classements soient acceptés syntaxiquement, ils n’ont aucune incidence sur le traitement. Par exemple, les langues avec des lettres à deux caractères et à trois caractères (par exemple « dzs » en hongrois, « ch » en tchèque) comptent toujours celles-ci comme deux ou trois caractères (pas un caractère) pour l’argument de longueur.
The collation of the result is the same as the collation of the first input. Cela peut être utile si la valeur renvoyée est transmise à une autre fonction dans le cadre d’appels de fonctions imbriquées.
Actuellement, Snowflake autorise les arguments base
et remplissage
à avoir des spécificateurs de classement différents. Toutefois, les spécificateurs de classement individuels ne peuvent pas être conservés tous les deux car la valeur renvoyée n’aura qu’un seul spécificateur de classement. Snowflake recommande aux utilisateurs d’éviter d’utiliser des chaînes remplissage
dont le classement est différent de celui de la chaîne base
.
Exemples¶
Cet exemple montre le remplissage des données VARCHAR
et BINARY
:
Créez et remplissez une table :
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');Démonstration du remplissage de
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 | +----------------+------------------+------------------+Démonstration du remplissage 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; +------------------------------+----------------------+----------------------+ | B | PAD_WITH_BLANK | PAD_WITH_DOLLAR_SIGN | |------------------------------+----------------------+----------------------| | 4869 | 20202020202020204869 | 24242424242424244869 | | 2D3132332E3030 | 2020202D3132332E3030 | 2424242D3132332E3030 | | 5477656C766520446F6C6C617273 | 5477656C766520446F6C | 5477656C766520446F6C | +------------------------------+----------------------+----------------------+
Cet exemple montre le remplissage lorsque plusieurs caractères sont utilisés et que le remplissage n’est pas un multiple de la longueur de la chaîne de remplissage à plusieurs caractères :
SELECT LPAD('123.50', 19, '*_'); +--------------------------+ | LPAD('123.50', 19, '*_') | |--------------------------| | *_*_*_*_*_*_*123.50 | +--------------------------+