Einige RDBMS stellen ein LPAD()
bereit und RPAD()
Funktion, die es uns ermöglicht, eine Zeichenfolge links oder rechts aufzufüllen. Bei einigen Funktionen können wir auch führende oder nachgestellte Nullen hinzufügen.
Nachfolgend finden Sie Beispiele für die Anwendung von SQL-Padding in einigen der bekannteren RDBMSs.
Orakel
Oracle stellt uns LPAD()
zur Verfügung und RPAD()
speziell zum Auffüllen des linken oder rechten Teils einer Zeichenfolge:
SELECT LPAD('Cat', 20)
FROM DUAL;
Ergebnis:
LPAD('CAT',20) _______________________ Cat
In diesem Fall habe ich LPAD()
verwendet links auffüllen, und die resultierende Zeichenfolge ist 20 Zeichen lang, weil ich das für das zweite Argument verwendet habe.
Das Ergebnis wird mit einem Leerzeichen aufgefüllt, da dies das Standardzeichen zum Auffüllen ist. Wenn Sie nicht angeben, mit welchem Zeichen die Zeichenfolge aufgefüllt werden soll, wird ein Leerzeichen verwendet.
Sie können ein drittes Zeichen hinzufügen, um anzugeben, welches Zeichen zum Auffüllen verwendet werden soll:
SELECT LPAD('7', 3, '0')
FROM DUAL;
Ergebnis:
LPAD('7',3,'0') __________________ 007
In diesem Fall habe ich eine Zahl mit Nullen aufgefüllt (obwohl das Ergebnis ein String ist).
Oracle hat auch einen TO_CHAR(number)
Funktion, die verwendet werden kann, um führende Nullen zu einer Zahl hinzuzufügen:
SELECT TO_CHAR(7, 'fm000')
FROM DUAL;
Ergebnis:
007
Die 0
format-Element repräsentiert jede Ziffer in der ursprünglichen Zahl und Null, wenn an dieser Position in der ursprünglichen Zahl keine Ziffer vorhanden ist.
PostgreSQL
PostgreSQL hat auch sein eigenes LPAD()
und RPAD()
Funktionen:
SELECT
LPAD('7', 3, '0') AS "Left Padding",
RPAD('7', 3, '0') AS "Right Padding",
LPAD(RPAD('7', 3, '0'), 5, '0') AS "Both";
Ergebnis:
Left Padding | Right Padding | Both --------------+---------------+------- 007 | 700 | 00700
Und es hat auch sein eigenes TO_CHAR()
Funktion, die ähnlich wie die gleichnamige Funktion von Oracle funktioniert:
SELECT TO_CHAR(7, 'fm000');
Ergebnis:
007
MariaDB
MariaDB hat ein eigenes LPAD()
und RPAD()
Funktionen:
SELECT
LPAD('7', 3, '0') AS "Left Padding",
RPAD('7', 3, '0') AS "Right Padding",
LPAD(RPAD('7', 3, '0'), 5, '0') AS "Both";
Ergebnis:
+--------------+---------------+-------+ | Left Padding | Right Padding | Both | +--------------+---------------+-------+ | 007 | 700 | 00700 | +--------------+---------------+-------+
Und während MariaDB seinen eigenen TO_CHAR()
hat funktioniert nicht mit Zahlen (es ist auf datetime-Werte beschränkt).
MySQL
MySQL hat auch sein eigenes LPAD()
und RPAD()
Funktionen.
Hier ist ein Beispiel für die Verwendung von LPAD()
gegen eine Datenbankspalte:
SELECT Genre, LPAD(Genre, 10, '.')
FROM Genres;
Ergebnis:
+---------+----------------------+ | Genre | LPAD(Genre, 10, '.') | +---------+----------------------+ | Rock | ......Rock | | Jazz | ......Jazz | | Country | ...Country | | Pop | .......Pop | | Blues | .....Blues | | Hip Hop | ...Hip Hop | | Rap | .......Rap | | Punk | ......Punk | +---------+----------------------+
SQL-Server
SQL Server ist insofern eine kleine Anomalie, als es kein LPAD()
hat oder RPAD()
Funktion.
SQL Server hat jedoch ein FORMAT()
Funktion, mit der wir Zahlen einfach mit führenden Nullen auffüllen können:
SELECT FORMAT(7, '000');
Ergebnis:
007
Das zweite Argument ist eine benutzerdefinierte numerische Formatzeichenfolge, die bestimmt, wie viele Zeichen die resultierende Zeichenfolge haben wird. Die Tatsache, dass ich Nullen verwendet habe, bedeutet, dass das Ergebnis bei Bedarf führende Nullen enthält.
Um Strings in SQL Server aufzufüllen, können wir etwa so vorgehen:
SELECT RIGHT('.......' + 'Cat', 7);
Ergebnis:
....Cat
Es gibt verschiedene andere Techniken, die wir zum Anwenden von Padding in SQL Server verwenden können.