In PostgreSQL können wir den TO_CHAR()
verwenden Funktion zum Hinzufügen führender Nullen zu einer Zahl. Die Funktion wandelt die Zahl unter Verwendung des (optionalen) Formats, das wir angeben, in einen String um.
Eine andere Möglichkeit ist die Verwendung von LPAD()
Funktion zum Auffüllen einer Zahl mit führenden Nullen.
Der TO_CHAR()
Funktion
Bei Verwendung des TO_CHAR()
verwenden Sie die 0
format-Element, um führende und/oder nachgestellte Nullen einzuschließen.
Beispiel:
SELECT TO_CHAR(7, 'fm000');
Ergebnis:
007
Hier ist es im Vergleich zu 9
Formatelement:
SELECT
TO_CHAR(7, 'fm999') AS "9",
TO_CHAR(7, 'fm000') AS "0";
Ergebnis:
9 | 0 ---+----- 7 | 007
Die Anzahl der führenden Nullen wird durch die Anzahl der 0
bestimmt Formatelemente und die Anzahl der Ziffern in der Nummer:
SELECT
TO_CHAR(77, 'fm0') AS "r1",
TO_CHAR(77, 'fm00000') AS "r2",
TO_CHAR(777, 'fm00000') AS "r3",
TO_CHAR(7777, 'fm00000') AS "r4",
TO_CHAR(77777, 'fm00000') AS "r5";
Ergebnis:
Der fm
Der Formatmodifikator unterdrückt alle führenden und/oder nachfolgenden Auffüllungen, die möglicherweise im Ergebnis enthalten sind. Wenn die Zahl beispielsweise negativ ist, wird ein Minuszeichen vorangestellt. Aber wenn die Zahl positiv ist, ist kein Zeichen enthalten, und ein Leerzeichen erscheint, wo das Pluszeichen gewesen wäre.
Hier ist ein Beispiel, um dies zu demonstrieren:
SELECT
TO_CHAR(-7, '000') AS "Minus Sign",
TO_CHAR(7, '000') AS "Padded",
TO_CHAR(7, 'fm000') AS "Not Padded";
Ergebnis:
Minuszeichen | Gepolstert | Nicht gepolstert ------------+--------+------------ -007 | 007 | 007
Das LPAD()
Funktion
Wir können alternativ das LPAD()
verwenden Funktion zum Auffüllen von Zahlen mit führenden Nullen:
SELECT LPAD('7', 3, '0');
Ergebnis:
007
Ein weiteres Beispiel:
SELECT
LPAD('77', 1, '0') AS "r1",
LPAD('77', 5, '0') AS "r2",
LPAD('777', 5, '0') AS "r3",
LPAD('7777', 5, '0') AS "r4",
LPAD('77777', 5, '0') AS "r5";
Ergebnis:
Beachten Sie, dass diese Funktion erfordert, dass die Zahl als Zeichenfolge übergeben wird. Daher müssen wir die Zahl zuerst in einen String umwandeln. Das Füllzeichen muss ebenfalls ein String sein.
Also müssen wir vielleicht so etwas tun:
SELECT LPAD(CAST(7 AS varchar), 3, '0');
Ergebnis:
007
Einer der Vorteile von LPAD()
Der Unterschied zur vorherigen Methode besteht darin, dass wir dem Ergebnis andere Zeichen voranstellen können – es muss keine führende Null sein.
SELECT
LPAD('77', 1, '.') AS "r1",
LPAD('77', 5, '.') AS "r2",
LPAD('777', 5, '.') AS "r3",
LPAD('7777', 5, '.') AS "r4",
LPAD('77777', 5, '.') AS "r5";
Ergebnis: