Verwendung, Vorteile und Alternative des Zerofill in MySQL

Mehvish Ashiq 20 Juni 2023
Verwendung, Vorteile und Alternative des Zerofill in MySQL

Heute werden wir über die Verwendung, die Vorteile und die Alternative des ZEROFILL-Attributs in MySQL aufgeklärt.

die Verwendung und der Nutzen des ZEROFILL-Attributs in MySQL

Der Vorteil der Verwendung des Attributs ZEROFILL besteht darin, dass es nichts mit der Eingabe und der Datenspeicherung zu tun hat, sondern nur die Anzeige des Ausgabewerts beeinflusst. Der MySQL fügt automatisch das UNSIGNED hinzu, wenn die Spaltendefinition ZEROFILL verwendet wird.

Immer wenn wir eine Tabelle erstellen, indem wir eine Spalte (Attribut) mit dem Attribut ZEROFILL definieren, wird die Ausgabe (Ergebniswert) einer Spalte links mit Nullen bis zu der in einer Spaltendefinition angegebenen Anzeigebreite aufgefüllt.

Beispielcode:

CREATE TABLE table_one (
    column_one INT(8) ZEROFILL NOT NULL,
    column_two INT(8) NOT NULL
);

INSERT INTO table_one (column_one, column_two) VALUES
(9, 9),
(98, 98),
(987, 987),
(987654321, 987654321);

SELECT column_one, column_two FROM table_one;

Ausgang:

+------------+------------+
| column_one | column_two |
+------------+------------+
|   00000009 |          9 |
|   00000098 |         98 |
|   00000987 |        987 |
|  987654321 |  987654321 |
+------------+------------+
4 rows in set (0.00 sec)

Siehe das obige Beispiel, in dem die Breite des Attributs column_one 8 ist. Die Werte, die länger als die angegebene Anzeigebreite sind, werden nicht abgeschnitten.

Siehe den letzten Datensatz in der obigen Tabellenausgabe, 987654321.

Angenommen, wir speichern größere Werte als die Anzeigebreite im Integer-Feld mit dem Attribut ZEROFILL. Es können Probleme auftreten, wenn MySQL die temporären Tabellen für komplizierte joins generiert.

Der MySQL-Server geht davon aus, dass der Datenwert in die Anzeigebreite des Felds (Spalte) passt. Die an UNION-Abfragen oder -Ausdrücken beteiligten Spalten ignorieren das ZEROFILL-Attribut.

Wie bei MySQL 8.0.17 ist das Attribut ZEROFILL für die numerischen Datentypen veraltet. Wir dürfen uns also auf die Unterstützung des Attributs ZEROFILL freuen, da die Anzeigebreiten der Integer-Datentypen in zukünftigen MySQL-Versionen entfernt werden.

Alternative Funktion des ZEROFILL-Attributs in MySQL

Wir können also die Alternativen verwenden, die die gleichen Effekte für diese Attribute erzeugen. Zum Beispiel können wir mit dem LPAD() Nullen links bis zur Anzeigebreite hinzufügen oder formatierte Zahlen im Feld CHAR speichern.

Siehe das folgende Code-Snippet.

SELECT LPAD(column_one,8,0) FROM table_one;

Ausgang:

+----------------------+
| LPAD(column_one,8,0) |
+----------------------+
| 00000009             |
| 00000098             |
| 00000987             |
| 98765432             |
+----------------------+
4 rows in set (0.001 sec)

Wir können das LPAD() nicht nur verwenden, um Nullen links von der Spalte vom Typ INT aufzufüllen, sondern es auch für den Wert vom Typ VARCHAR() wie folgt verwenden.

SELECT LPAD('Hello',8,'??') FROM table_one;

Ausgang:

+----------------------+
| LPAD('Hello',8,'??') |
+----------------------+
| ???Hello             |
| ???Hello             |
| ???Hello             |
| ???Hello             |
+----------------------+
4 rows in set (0.00 sec)
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook