Rumah  >  Artikel  >  pangkalan data  >  Mengapa Pertanyaan MySQL SELECT Saya Gagal Apabila Membandingkan Terapung, Tetapi Berfungsi Apabila Saya Mengalih Keluar Perbandingan?

Mengapa Pertanyaan MySQL SELECT Saya Gagal Apabila Membandingkan Terapung, Tetapi Berfungsi Apabila Saya Mengalih Keluar Perbandingan?

Patricia Arquette
Patricia Arquetteasal
2024-10-28 16:29:29450semak imbas

Why Does My MySQL SELECT Query Fail When Comparing Floats, But Works When I Remove the Comparison?

Menyelesaikan Isu Perbandingan Terapung dalam Pertanyaan SELECT MySQL

Dalam pertanyaan MySQL SELECT, masalah ketepatan boleh timbul apabila membandingkan nilai apungan. Untuk menangani isu ini, mari kita terokai soalan berikut:

Soalan:

Mengapa pertanyaan SELECT dengan perbandingan kesamaan apungan gagal, manakala mengalih keluar perbandingan mengembalikan yang betul barisan? Bagaimanakah kita boleh menghantar apungan kepada 2 digit sebelum operasi untuk perlawanan yang berjaya?

Jawapan:

Masalahnya berpunca daripada ketepatan titik terapung yang wujud dalam MySQL. Untuk menyelesaikan masalah ini, kita boleh menghantar lajur apungan kepada jenis perpuluhan, yang memastikan ketepatan kepada bilangan digit tertentu.

Penyelesaian:

Pertanyaan berikut berjaya dipadankan nilai apungan dengan menghantarnya kepada perpuluhan:

SELECT * FROM `table` WHERE CAST(`price` AS DECIMAL) = CAST(101.31 AS DECIMAL);

Penyelesaian Alternatif:

Sebagai alternatif, anda boleh mempertimbangkan untuk menukar lajur harga kepada PERPULUHAN, yang lebih sesuai untuk mengendalikan nilai kewangan dan menawarkan kawalan ketepatan yang lebih baik.

Atas ialah kandungan terperinci Mengapa Pertanyaan MySQL SELECT Saya Gagal Apabila Membandingkan Terapung, Tetapi Berfungsi Apabila Saya Mengalih Keluar Perbandingan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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