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

Fonction RPAD() dans Oracle

Dans Oracle, le RPAD() La fonction vous permet de remplir la partie droite 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 :

RPAD(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é à droite à 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 RPAD('Cat', 25)
FROM DUAL;

Résultat :

              RPAD('CAT',25) 
____________________________ 
Cat                         

Il n'est pas facile de voir l'effet de cet exemple, car nous avons rempli la chaîne avec le caractère par défaut (un espace), mais cela a eu pour effet de repousser la largeur de la colonne.

Vous trouverez ci-dessous un autre exemple qui illustre mieux l'effet :

SELECT RPAD('Cat', 15) || 'House'
FROM DUAL;

Résultat :

   RPAD('CAT',15)||'HOUSE' 
__________________________ 
Cat            House      

La concaténation des deux chaînes révèle la quantité de remplissage qui a été appliquée à la partie droite de la chaîne la plus à gauche.

Notez que le nombre fourni est la largeur totale de la chaîne résultante - pas la quantité de rembourrage.

Spécifiez un caractère

Dans cet exemple, je spécifie un caractère à utiliser pour le rembourrage :

SELECT RPAD('Cat', 7, '!')
FROM DUAL;

Résultat :

   RPAD('CAT',7,'!') 
____________________ 
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 RPAD('Cat', 2)
FROM DUAL;

Résultat :

   RPAD('CAT',2) 
________________ 
Ca              

Exemple de base de données

Voici un exemple de remplissage de la partie droite des valeurs dans une colonne de base de données :

SELECT 
    country_name,
    RPAD(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 
    RPAD(null, 3),
    RPAD('Cat', null),
    RPAD('Cat', 3, null)
FROM DUAL;

Résultat :

   RPAD(NULL,3)    RPAD('CAT',NULL)    RPAD('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 RPAD() sans passer d'argument renvoie une erreur :

SELECT RPAD()
FROM DUAL;

Résultat :

Error starting at line : 1 in command -
SELECT RPAD()
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 RPAD('Cat', 1, '>', 2)
FROM DUAL;

Résultat :

Error starting at line : 1 in command -
SELECT RPAD('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: