Dans Oracle, le LPAD()
La fonction vous permet de compléter la partie gauche d'une chaîne avec un certain caractère, jusqu'à un nombre spécifié de caractères.
La façon dont cela fonctionne est que vous spécifiez la longueur de la chaîne résultante. Si la chaîne d'origine est plus courte, le caractère de remplissage remplit l'espace restant.
Syntaxe
La syntaxe ressemble à ceci :
LPAD(expr1, n [, expr2 ])
Où :
expr1
etexpr2
peut être l'un des types de donnéesCHAR
,VARCHAR2
,NCHAR
,NVARCHAR2
,CLOB
, ouNCLOB
.n
est unNUMBER
entier ou une valeur qui peut être implicitement convertie en unNUMBER
entier.
La fonction renvoie expr1
, complété à gauche à la longueur n
caractères avec la séquence de caractères dans expr2
.
Si expr2
est omis, le caractère de remplissage est un simple blanc.
Exemple
Voici un exemple simple pour illustrer :
SELECT LPAD('Cat', 5)
FROM DUAL;
Résultat :
LPAD('CAT',5) ________________ Cat
Notez que le nombre fourni est la largeur totale de la chaîne résultante - pas la quantité de rembourrage.
La voici à nouveau par rapport à la chaîne d'origine (non rembourrée) :
SELECT LPAD('Cat', 5)
FROM DUAL
UNION ALL
SELECT 'Cat'
FROM DUAL;
Résultat :
LPAD('CAT',5) ________________ Cat Cat
Spécifiez un caractère
Dans cet exemple, je spécifie un caractère à utiliser pour le rembourrage :
SELECT LPAD('Cat', 5, '>')
FROM DUAL;
Résultat :
LPAD('CAT',5,'>') ____________________ >>Cat
Remplissage plus petit que la chaîne d'origine
Si le deuxième argument est inférieur à la chaîne d'origine, aucun remplissage n'est ajouté et la chaîne d'origine est raccourcie au nombre de caractères spécifié :
SELECT LPAD('Cat', 2)
FROM DUAL;
Résultat :
LPAD('CAT',2) ________________ Ca
Exemple de base de données
Voici un exemple de remplissage de la partie gauche des valeurs dans une colonne de base de données :
SELECT
country_name,
LPAD(country_name, 12, '.') AS Padded
FROM countries
FETCH FIRST 5 ROWS ONLY;
Résultat :
COUNTRY_NAME PADDED _______________ _______________ Argentina ...Argentina Australia ...Australia Belgium .....Belgium Brazil ......Brazil Canada ......Canada
Valeurs nulles
Si l'un des arguments est null
le résultat est null
:
SET NULL 'null';
SELECT
LPAD(null, 3),
LPAD('Cat', null),
LPAD('Cat', 3, null)
FROM DUAL;
Résultat :
LPAD(NULL,3) LPAD('CAT',NULL) LPAD('CAT',3,NULL) _______________ ___________________ _____________________ null null null
Par défaut, SQLcl et SQL*Plus renvoient un espace vide chaque fois que null
se produit à la suite d'un SQL SELECT
déclaration.
Cependant, vous pouvez utiliser SET NULL
pour spécifier une autre chaîne à renvoyer. Ici, j'ai précisé que la chaîne null
doit être retourné.
Nombre d'arguments incorrects
Appel de LPAD()
sans passer aucun argument renvoie une erreur :
SELECT LPAD()
FROM DUAL;
Résultat :
Error starting at line : 1 in command - SELECT LPAD() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function" *Cause: *Action:
Et passer le mauvais nombre d'arguments entraîne une erreur :
SELECT LPAD('Cat', 1, '>', 2)
FROM DUAL;
Résultat :
Error starting at line : 1 in command - SELECT LPAD('Cat', 1, '>', 2) FROM DUAL Error at Command Line : 1 Column : 28 Error report - SQL Error: ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function" *Cause: *Action: