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
undexpr2
kann jeder der DatentypenCHAR
sein ,VARCHAR2
,NCHAR
,NVARCHAR2
,CLOB
, oderNCLOB
.n
ist eineNUMBER
ganze Zahl oder ein Wert, der implizit in eineNUMBER
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: