Percubaan untuk melakukan pertanyaan SELECT menggunakan nilai titik terapung sebagai syarat selalunya mengakibatkan tingkah laku yang tidak dijangka. Isu berikut menunjukkan cabaran ini:
<code class="sql">SELECT * FROM `table` WHERE `ident`='ident23' AND `price`='101.31';</code>
Pertanyaan ini mengembalikan sifar baris, walaupun nilai 101.31 muncul dalam pangkalan data untuk lajur harga. Mengalih keluar keadaan harga mengembalikan baris yang dijangkakan.
Untuk menangani isu ini, pertimbangkan penyelesaian berikut:
Menghantar nilai titik terapung ke jenis PERPULUHAN sebelum membandingkan memastikan ketepatan yang betul:
<code class="sql">SELECT * FROM table WHERE CAST(price AS DECIMAL) = CAST(101.31 AS DECIMAL);</code>
Pertimbangkan untuk mengubah suai lajur harga kepada jenis PERPULUHAN, yang memberikan ketepatan yang lebih baik untuk nilai monetari:
ALTER TABLE `table` MODIFY COLUMN `price` DECIMAL;
Atas ialah kandungan terperinci Berikut ialah beberapa tajuk berasaskan soalan berdasarkan teks yang anda berikan, setiap satu memfokuskan pada aspek isu yang berbeza: Pilihan 1 (Memfokus pada masalah): * Mengapa Pertanyaan MySQL SELECT Saya Tidak Mengembalikan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!