Oracle
 sql >> Base de données >  >> RDS >> Oracle

Fonction LPAD() dans Oracle

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 et expr2 peut être l'un des types de données CHAR , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB , ou NCLOB .
  • n est un NUMBER entier ou une valeur qui peut être implicitement convertie en un NUMBER 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: