In SQL LPAD()
ist eine häufig verwendete Funktion, die den linken Teil einer Zeichenfolge mit einem bestimmten Zeichen auffüllt. Die Funktion kann auf Zeichenfolgen und Zahlen angewendet werden, obwohl Zahlen je nach DBMS möglicherweise als Zeichenfolge übergeben werden müssen, bevor sie aufgefüllt werden können.
DBMSs, die ein LPAD()
haben Funktion gehören MySQL, MariaDB, PostgreSQL und Oracle.
DBMSs, die nicht ein LPAD()
haben Funktion umfassen SQL Server und SQLite (obwohl es in diesen DBMSs andere Möglichkeiten gibt, linkes Padding anzuwenden).
Beispiel
Hier ist ein Beispiel, um zu demonstrieren, wie man LPAD()
verwendet in Ihrem SQL-Code:
SELECT LPAD('Look Left', 20);
Ergebnis:
+-----------------------+ | LPAD('Look Left', 20) | +-----------------------+ | Look Left | +-----------------------+
In diesem Beispiel wird der linke Teil der Zeichenfolge mit einem Leerzeichen aufgefüllt (das standardmäßige Füllzeichen), und die resultierende Zeichenfolge ist 20 Zeichen lang (da ich 20
angegeben habe als zweites Argument).
Oracle funktioniert genauso, aber wir müssen FROM DUAL
verwenden wenn Sie eine Abfrage wie diese durchführen (ohne eine tatsächliche Tabelle abzufragen):
SELECT LPAD('Look Left', 20)
FROM DUAL;
Ergebnis:
LPAD('LOOKLEFT',20) _______________________ Look Left
Geben Sie ein Füllzeichen an
Die Polsterung muss nicht unbedingt ein Leerzeichen sein. Wir können optional ein drittes Argument hinzufügen, um das Zeichen (oder die Zeichen) anzugeben, die in der Auffüllung verwendet werden sollen.
SELECT LPAD('7', 3, '0');
Ergebnis:
007
In diesem Fall habe ich eine Zahl mit Nullen aufgefüllt. Eigentlich habe ich die Zahl in diesem Beispiel als String übergeben.
In einigen DBMS (wie MariaDB und MySQL) können wir die Nummer als Zahl übergeben, sowie die Zahl, mit der sie aufgefüllt werden soll:
SELECT LPAD(7, 3, 0);
Ergebnis:
007
Wir können dies auch in Oracle tun:
SELECT LPAD(7, 3, 0)
FROM DUAL;
Ergebnis:
007
Aber PostgreSQL hat damit ein Problem:
SELECT LPAD(7, 3, 0);
Ergebnis:
ERROR: function lpad(integer, integer, integer) does not exist
SQL-Server
SQL Server hat kein LPAD()
Funktion, aber sie hat ein FORMAT()
Funktion, mit der wir Zahlen mit führenden Nullen auffüllen können:
SELECT FORMAT(7, '000');
Ergebnis:
007
Das funktioniert so, dass wir die Nummer übergeben, gefolgt von einem Format-String. Im obigen Beispiel ist die Formatzeichenfolge 000
. Dies ist eine benutzerdefinierte numerische Formatzeichenfolge, die dazu führt, dass die ursprüngliche Zahl aufgefüllt wird, sodass das Ergebnis aus drei Ziffern besteht. Wenn die ursprüngliche Nummer nicht bereits drei Ziffern enthält, wird sie mit Nullen aufgefüllt.
Um Zeichenfolgen in SQL Server links aufzufüllen, können wir Folgendes tun:
SELECT RIGHT('.......' + 'Cat', 7);
Ergebnis:
....Cat
Es gibt auch ein paar andere LPAD()-Äquivalente in SQL Server.