Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Mengapa kueri sql ini tidak mengembalikan hasil apa pun yang membandingkan angka floating point?

Secara umum bukanlah ide yang baik untuk membandingkan angka floating point dengan = sama dengan operator.

Untuk aplikasi Anda, Anda perlu mempertimbangkan seberapa dekat Anda menginginkan jawabannya.

1 derajat sekitar 112km, dan 0,00001 derajat sekitar 1,1 meter (di khatulistiwa). Apakah Anda benar-benar ingin aplikasi Anda mengatakan "tidak sama" jika dua titik berbeda 0,00000001 derajat =1mm?

set @EPSLION = 0.00001  /* 1.1 metres at equator */

SELECT * FROM location_forslag 
WHERE `lngitude` >= 13.8461208 [email protected] 
AND `lngitude` <= 13.8461208 + @EPSILON

Ini akan mengembalikan poin di mana lngitude berada dalam @epsilon derajat dari nilai yang diinginkan. Anda harus memilih nilai epsilon yang sesuai dengan aplikasi Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menemukan Kode ASCII untuk Karakter tertentu di MySQL

  2. MySQL mengekspor KE OUTFILE --secure-file-priv error saat menggunakan set direktori

  3. MySQL:Akses ditolak untuk pengguna 'pengguna'@'IP_ADDRESS' - Akses jarak jauh diizinkan untuk beberapa host gagal untuk host lain

  4. Cara Menemukan dan Mengganti Teks di Database MySQL menggunakan SQL

  5. Hibernasi bergabung dengan dua tabel dan ambil semua catatan?