MySQL bir float seçme

5 Cevap php

Ben gibi bir tanımlayıcı ve bir fiyata, dayanan bir tabloda bir SELECT maç yapmaya çalışıyorum:

SELECT * FROM `table` WHERE `ident`='ident23' AND `price`='101.31';

Eğer kaldırırsanız price='101.31' Bu doğru satır döndürür bit ise yukarıda döner, satır sıfır.

A yapıyor ...

SELECT * FROM `table`;

Açıkça yukarıdaki gibi aynı satır döndürür bildiren price='101.31'. Oysa seçin bu maç için başarısız olur. = <= değişen iş yapar - ama bu tam bir çözüm değildir.

Operasyon böylece yukarıdaki SELECT işi (ya da başka bir çözüm) yapmak, bunun üzerine gerçekleştirilir önce 2 basamak MySQL float bir yolu var mı?

Teşekkürler!

5 Cevap

Ondalık Döküm benim için çalıştı:

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

Ancak, sadece ilk etapta price sütun bir ONDALIK yapma düşünebilirsiniz. ONDALIK genellikle parasal değerleri ile uğraşırken kullanmak için en iyi türü olarak kabul edilir.

Bir şamandıra doğal kesin çünkü çalışmıyor. Gerçek değeri, 2 yerlere yuvarlak üzerinde ilk YUVARLAK () kullanın ya da daha iyisi yerine bir şamandıra bir ondalık türü kullanabilirsiniz muhtemelen '101 ,3100000000001 'gibi bir şeydir.

Hiç para için yüzer kullanmayın.

Bu doğrultuda belki bir şey:

SELECT * FROM table WHERE ident='ident23' AND ABS(price - 101.31) < .01;

Bu çalışır mı?

SELECT * , ROUND( price, 2 ) rounded
FROM table
WHERE ident = 'ident23'
HAVING rounded = 101.31