Bagaimana MySQL Mengendalikan Integer Panjang dalam Lajur Lebih Pendek: Limpahan atau Pemangkasan?

DDD
Lepaskan: 2024-10-27 20:08:02
asal
650 orang telah melayarinya

How Does MySQL Handle Long Integers in Shorter Columns: Overflow or Truncation?

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
Salin selepas log masuk

Untuk contoh yang diberikan, dengan integer asal 715988985123857:

Resulting Integer = (715988985123857 & 0x7FFFFFFF) + 1
Resulting Integer = (2147483647) + 1
Resulting Integer = 2147483647
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!