Oracle
 sql >> Datenbank >  >> RDS >> Oracle

RPAD()-Funktion in Oracle

In Oracle das RPAD() Mit dieser Funktion können Sie den rechten Teil einer Zeichenfolge mit einem bestimmten Zeichen bis zu einer bestimmten Anzahl von Zeichen auffüllen.

Die Funktionsweise ist, dass Sie angeben, wie lang die resultierende Zeichenfolge sein soll. Wenn die ursprüngliche Zeichenfolge kürzer ist, füllt das Füllzeichen den verbleibenden Platz aus.

Syntax

Die Syntax lautet wie folgt:

RPAD(expr1 , n [, expr2 ])

Wo:

  • expr1 und expr2 kann jeder der Datentypen CHAR sein , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB , oder NCLOB .
  • n ist eine NUMBER ganze Zahl oder ein Wert, der implizit in eine NUMBER konvertiert werden kann ganze Zahl.

Die Funktion gibt expr1 zurück , rechts aufgefüllt auf die Länge n Zeichen mit der Zeichenfolge in expr2 .

Wenn expr2 weggelassen wird, ist das Füllzeichen ein einzelnes Leerzeichen.

Beispiel

Hier ist ein einfaches Beispiel zur Veranschaulichung:

SELECT RPAD('Cat', 25)
FROM DUAL;

Ergebnis:

              RPAD('CAT',25) 
____________________________ 
Cat                         

Die Wirkung dieses Beispiels ist nicht leicht zu erkennen, da wir die Zeichenfolge mit dem Standardzeichen (einem Leerzeichen) aufgefüllt haben, aber es hatte den Effekt, dass die Breite der Spalte vergrößert wurde.

Unten ist ein weiteres Beispiel, das den Effekt besser demonstriert:

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

Ergebnis:

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

Die Verkettung der beiden Zeichenfolgen zeigt die Füllmenge, die auf den rechten Teil der Zeichenfolge ganz links angewendet wurde.

Beachten Sie, dass die angegebene Zahl die Gesamtbreite der resultierenden Zeichenfolge ist – nicht die Menge an Polsterung.

Geben Sie ein Zeichen an

In diesem Beispiel gebe ich ein Zeichen an, das für die Auffüllung verwendet werden soll:

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

Ergebnis:

   RPAD('CAT',7,'!') 
____________________ 
Cat!!!!             

Padding kleiner als die ursprüngliche Zeichenfolge

Wenn das zweite Argument kleiner als die ursprüngliche Zeichenfolge ist, wird keine Auffüllung hinzugefügt, und die ursprüngliche Zeichenfolge wird auf die angegebene Anzahl von Zeichen gekürzt:

SELECT RPAD('Cat', 2)
FROM DUAL;

Ergebnis:

   RPAD('CAT',2) 
________________ 
Ca              

Datenbankbeispiel

Hier ist ein Beispiel für das Auffüllen des rechten Teils der Werte in einer Datenbankspalte:

SELECT 
    country_name,
    RPAD(country_name, 12, '.') AS Padded
FROM countries
FETCH FIRST 5 ROWS ONLY;

Ergebnis:

   COUNTRY_NAME          PADDED 
_______________ _______________ 
Argentina       Argentina...    
Australia       Australia...    
Belgium         Belgium.....    
Brazil          Brazil......    
Canada          Canada......   

Nullwerte

Wenn eines der Argumente null ist das Ergebnis ist null :

SET NULL 'null';

SELECT 
    RPAD(null, 3),
    RPAD('Cat', null),
    RPAD('Cat', 3, null)
FROM DUAL;

Ergebnis:

   RPAD(NULL,3)    RPAD('CAT',NULL)    RPAD('CAT',3,NULL) 
_______________ ___________________ _____________________ 
null            null                null                 

Standardmäßig geben SQLcl und SQL*Plus ein Leerzeichen zurück, wenn null tritt als Ergebnis eines SQL SELECT auf Erklärung.

Sie können jedoch SET NULL verwenden um eine andere Zeichenfolge anzugeben, die zurückgegeben werden soll. Hier habe ich angegeben, dass der String null zurückgegeben werden soll.

Falsche Argumentanzahl

Aufruf von RPAD() ohne Übergabe von Argumenten gibt einen Fehler zurück:

SELECT RPAD()
FROM DUAL;

Ergebnis:

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:

Und das Übergeben der falschen Anzahl von Argumenten führt zu einem Fehler:

SELECT RPAD('Cat', 1, '>', 2)
FROM DUAL;

Ergebnis:

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: