Memahami Transformasi Lajur Berangka dalam MySQL
MySQL sering mengubah integer panjang kepada nilai yang tidak dijangka apabila dimasukkan ke dalam lajur yang lebih pendek. Daripada memotong, MySQL melaraskan nilai yang disimpan. Tingkah laku ini dikaitkan dengan mekanisme limpahan integer.
Contohnya, pertimbangkan lajur bernama some_number dengan panjang 10. Apabila nombor yang melebihi panjang ini (cth., 715988985123857) dimasukkan, ia ditukar menjadi 2147483647.
Mekanisme Limpahan
Menurut dokumentasi MySQL, limpahan integer berlaku apabila hasil pengiraan melebihi nilai maksimum yang dibenarkan untuk jenis data. Dalam kes ini, nilai maksimum untuk integer 10-bit ialah 2147483647.
Formula untuk Keputusan Dikira
Transformasi mengikut formula tertentu:
Result = Number % (2^Bits) - 1
di mana:
Dalam contoh kami , Nombor ialah 715988985123857 dan Bit ialah 10, menghasilkan:
2147483647
BigInt vs. Int
Untuk mengelakkan limpahan integer, gunakan jenis data bigint untuk integer yang lebih besar . BigInt boleh menyimpan nilai sehingga 2^63-1, menghalang masalah pemangkasan atau transformasi.
Atas ialah kandungan terperinci Mengapakah MySQL mengubah integer besar yang dimasukkan ke dalam lajur yang lebih pendek?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!