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)