PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

2 Möglichkeiten zum Hinzufügen führender Nullen in PostgreSQL

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:

r1 | r2 | r3 | r4 | r5 ----+-------+-------+-------+------- # | 00077 | 00777 | 07777 | 77777

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:

r1 | r2 | r3 | r4 | r5 ----+-------+-------+-------+------- 7 | 00077 | 00777 | 07777 | 77777

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:

r1 | r2 | r3 | r4 | r5 ----+-------+-------+-------+------- 7 | ...77 | ..777 | .7777 | 77777