Saya hanya ingin tahu apa manfaat / penggunaan mendefinisikan ZEROFILL
untuk INT
Tipe Data MySQL
?
`id` INT UNSIGNED ZEROFILL NOT NULL
Saya hanya ingin tahu apa manfaat / penggunaan mendefinisikan ZEROFILL
untuk INT
Tipe Data MySQL
?
`id` INT UNSIGNED ZEROFILL NOT NULL
Jawaban:
Saat Anda memilih kolom dengan tipe, ZEROFILL
itu 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 ZEROFILL
juga menyiratkan UNSIGNED
.
Penggunaan ZEROFILL
dan 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 ZEROFILL
mungkin menarik:
Di Jerman, kami memiliki kode pos 5 digit. Namun, Kode tersebut dapat dimulai dengan Nol, sehingga 80337
kode pos yang valid untuk munic, 01067
adalah kode pos Berlin.
Seperti yang Anda lihat, setiap warga negara Jerman mengharapkan kode pos ditampilkan sebagai kode 5 digit, jadi 1067
terlihat aneh.
Untuk menyimpan data tersebut, Anda bisa menggunakan VARCHAR(5)
atau INT(5) ZEROFILL
sedangkan bilangan bulat zerofilled memiliki dua keuntungan besar:
1067
, Anda masih mendapatkan 01067
kembaliMungkin 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)
666
jadi 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.
zerofill
ini tidak standar. " TheZEROFILL
atribut diabaikan ketika kolom terlibat dalam ekspresi atauUNION
query. Jika Anda menyimpan nilai-nilai yang lebih besar dari lebar layar dalam sebuah kolom integer yang memilikiZEROFILL
atribut, 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. "