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

LPAD()-Funktion in Oracle

In Oracle das LPAD() Mit der Funktion können Sie den linken 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:

LPAD(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 , links 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 LPAD('Cat', 5)
FROM DUAL;

Ergebnis:

   LPAD('CAT',5) 
________________ 
  Cat           

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

Hier ist es noch einmal im Vergleich zum ursprünglichen (nicht aufgefüllten) String:

SELECT LPAD('Cat', 5)
FROM DUAL
UNION ALL
SELECT 'Cat'
FROM DUAL;

Ergebnis:

   LPAD('CAT',5) 
________________ 
  Cat            
Cat             

Geben Sie ein Zeichen an

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

SELECT LPAD('Cat', 5, '>')
FROM DUAL;

Ergebnis:

   LPAD('CAT',5,'>') 
____________________ 
>>Cat               

Padding kleiner als die ursprüngliche Zeichenfolge

Wenn das zweite Argument kleiner als der ursprüngliche String ist, wird kein Padding hinzugefügt und der ursprüngliche String wird auf die angegebene Anzahl von Zeichen gekürzt:

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

Ergebnis:

   LPAD('CAT',2) 
________________ 
Ca              

Datenbankbeispiel

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

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

Ergebnis:

   LPAD(NULL,3)    LPAD('CAT',NULL)    LPAD('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 LPAD() ohne Übergabe von Argumenten gibt einen Fehler zurück:

SELECT LPAD()
FROM DUAL;

Ergebnis:

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:

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

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

Ergebnis:

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: