Rumah > pangkalan data > tutorial mysql > Mengapakah MySQL mengubah integer besar yang dimasukkan ke dalam lajur yang lebih pendek?

Mengapakah MySQL mengubah integer besar yang dimasukkan ke dalam lajur yang lebih pendek?

Barbara Streisand
Lepaskan: 2024-10-31 08:27:30
asal
874 orang telah melayarinya

Why does MySQL transform large integers inserted into shorter columns?

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

di mana:

  • Nombor ialah nombor asal yang dimasukkan
  • Bit ialah bilangan bit dalam lajur destinasi

Dalam contoh kami , Nombor ialah 715988985123857 dan Bit ialah 10, menghasilkan:

2147483647
Salin selepas log masuk

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan