Rumah >pangkalan data >tutorial mysql >Bagaimana MySQL Mengendalikan Integer Panjang dalam Lajur Lebih Pendek: Limpahan atau Pemangkasan?
Transformasi Integer Panjang dalam Lajur Lebih Pendek: Mekanisme dan Formula
Apabila memasukkan integer panjang ke dalam lajur integer yang lebih pendek, MySQL biasanya memotong nilai untuk muat dalam panjang yang ditentukan. Walau bagaimanapun, dalam sesetengah kes, gelagat mungkin berbeza, mengakibatkan perubahan yang tidak dijangka.
Pertimbangkan lajur integer panjang 10 digit some_number. Jika nilai yang melebihi julat integer maksimum (2147483647) dimasukkan ke dalam lajur ini, bukannya pemotongan, MySQL akan menetapkan nilai kepada 2147483647, integer maksimum yang dibenarkan untuk jenis data tersebut.
Mekanisme Di Belakang Transformasi
Transformasi berlaku disebabkan limpahan integer. Apabila integer panjang melebihi julat yang tersedia, MySQL secara automatik mentafsirkannya sebagai integer negatif dan menyimpan perwakilan pelengkap kedua-duanya. Nilai negatif ini, apabila ditukar kembali kepada integer tidak bertanda, menghasilkan 2147483647.
Formula untuk Transformasi
Nilai yang terhasil boleh dikira menggunakan formula berikut:
Resulting Integer = (Original Integer & 0x7FFFFFFF) + 1
Untuk contoh yang diberikan, dengan integer asal 715988985123857:
Resulting Integer = (715988985123857 & 0x7FFFFFFF) + 1 Resulting Integer = (2147483647) + 1 Resulting Integer = 2147483647
Oleh itu, penjelmaan daripada 715988985123857 kepada 2147483647 adalah bukan satu limpahan maksimum untuk larian maksimum. jenis data yang ditentukan.
Atas ialah kandungan terperinci Bagaimana MySQL Mengendalikan Integer Panjang dalam Lajur Lebih Pendek: Limpahan atau Pemangkasan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!