Saya hanya ingin tahu apa manfaat / penggunaan mendefinisikan ZEROFILLuntuk INTTipe Data MySQL?
`id` INT UNSIGNED ZEROFILL NOT NULL
Saya hanya ingin tahu apa manfaat / penggunaan mendefinisikan ZEROFILLuntuk INTTipe Data MySQL?
`id` INT UNSIGNED ZEROFILL NOT NULL
Jawaban:
Saat Anda memilih kolom dengan tipe, ZEROFILLitu mengaitkan nilai bidang yang ditampilkan dengan nol hingga lebar tampilan yang ditentukan dalam definisi kolom. Nilai yang lebih panjang dari lebar tampilan tidak terpotong. Perhatikan bahwa penggunaan ZEROFILLjuga menyiratkan UNSIGNED.
Penggunaan ZEROFILLdan lebar tampilan tidak berpengaruh pada bagaimana data disimpan. Itu hanya mempengaruhi bagaimana itu ditampilkan.
Berikut adalah beberapa contoh SQL yang menunjukkan penggunaan ZEROFILL:
CREATE TABLE yourtable (x INT(8) ZEROFILL NOT NULL, y INT(8) NOT NULL);
INSERT INTO yourtable (x,y) VALUES
(1, 1),
(12, 12),
(123, 123),
(123456789, 123456789);
SELECT x, y FROM yourtable;
Hasil:
x y
00000001 1
00000012 12
00000123 123
123456789 123456789
Salah satu contoh untuk memahami, di mana penggunaan ZEROFILLmungkin menarik:
Di Jerman, kami memiliki kode pos 5 digit. Namun, Kode tersebut dapat dimulai dengan Nol, sehingga 80337kode pos yang valid untuk munic, 01067adalah kode pos Berlin.
Seperti yang Anda lihat, setiap warga negara Jerman mengharapkan kode pos ditampilkan sebagai kode 5 digit, jadi 1067terlihat aneh.
Untuk menyimpan data tersebut, Anda bisa menggunakan VARCHAR(5)atau INT(5) ZEROFILLsedangkan bilangan bulat zerofilled memiliki dua keuntungan besar:
1067, Anda masih mendapatkan 01067kembaliMungkin contoh ini membantu memahami penggunaan ZEROFILL.
Ini adalah fitur untuk kepribadian terganggu yang suka kotak persegi.
Anda memasukkan
1
23
123
tetapi ketika Anda memilih, itu bantalan nilai
000001
000023
000123
Ini membantu dalam penyortiran yang benar jika Anda perlu menggabungkan "integer" ini dengan sesuatu yang lain (angka atau teks lain) yang perlu disortir sebagai "teks".
sebagai contoh,
jika Anda akan perlu menggunakan nomor bidang bilangan bulat (katakanlah 5) bersambung sebagai A-005 atau 10/0005
Saya tahu saya terlambat ke pesta tetapi saya menemukan bahwa zerofill sangat membantu untuk representasi boolean dari TINYINT (1). Null tidak selalu berarti False, terkadang Anda tidak menginginkannya. Dengan zerofilling sebuah tinyint, Anda secara efektif mengonversi nilai-nilai itu ke INT dan menghapus semua aplikasi yang mungkin Anda miliki saat berinteraksi. Aplikasi Anda kemudian dapat memperlakukan nilai-nilai itu dengan cara yang mirip dengan tipe data primitif True = Tidak (0)
666jadi saya lebih suka untuk menjaga jawaban ini;-)
mysql> CREATE TABLE tin3(id int PRIMARY KEY,val TINYINT(10) ZEROFILL);
Query OK, 0 rows affected (0.04 sec)
mysql> INSERT INTO tin3 VALUES(1,12),(2,7),(4,101);
Query OK, 3 rows affected (0.02 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM tin3;
+----+------------+
| id | val |
+----+------------+
| 1 | 0000000012 |
| 2 | 0000000007 |
| 4 | 0000000101 |
+----+------------+
3 rows in set (0.00 sec)
mysql>
mysql> SELECT LENGTH(val) FROM tin3 WHERE id=2;
+-------------+
| LENGTH(val) |
+-------------+
| 10 |
+-------------+
1 row in set (0.01 sec)
mysql> SELECT val+1 FROM tin3 WHERE id=2;
+-------+
| val+1 |
+-------+
| 8 |
+-------+
1 row in set (0.00 sec)
Ketika digunakan bersama dengan atribut opsional (tidak standar) ZEROFILL, padding ruang default diganti dengan nol. Misalnya, untuk kolom yang dinyatakan sebagai INT (4) ZEROFILL, nilai 5 diambil sebagai 0005.
Jika Anda menentukan ZEROFILL untuk kolom angka, MySQL secara otomatis menambahkan atribut UNSIGNED ke kolom.
Tipe data numerik yang mengizinkan atribut TANDA TANGAN juga mengizinkan TANDA. Namun, tipe data ini ditandatangani secara default, sehingga atribut SIGNED tidak memiliki efek.
Deskripsi di atas diambil dari situs web resmi MYSQL.
zerofillini tidak standar. " TheZEROFILLatribut diabaikan ketika kolom terlibat dalam ekspresi atauUNIONquery. Jika Anda menyimpan nilai-nilai yang lebih besar dari lebar layar dalam sebuah kolom integer yang memilikiZEROFILLatribut, Anda mungkin mengalami masalah saat MySQL menghasilkan tabel sementara untuk beberapa rumit bergabung. Dalam kasus ini , MySQL mengasumsikan bahwa nilai data sesuai dengan lebar tampilan kolom. "