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
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é à 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: