Ho riscontrato un problema introducendo colonne in virgola mobile nello schema del database MySQL che i confronti su valori in virgola mobile non restituiscono sempre i risultati corretti.Problemi di confronto in virgola mobile di MySQL
1-50,12
2-34,57
3-12,75
4 - ... (il resto tutti a meno di 12,00)
SELECT COUNT(*) FROM `users` WHERE `points` > "12.75"
Questo mi restituisce "3".
Ho letto che il confronto dei valori in virgola mobile in MySQL è una cattiva idea e il tipo decimale è l'opzione migliore.
Ho qualche speranza di andare avanti con il tipo float e ottenere il confronto per funzionare correttamente?
Quali tipi di letterali sono racchiusi tra virgolette doppie in SQL? – Joey
Sfortunatamente, MySQL consente alle virgolette doppie di agire come virgolette singole per impostazione predefinita. Questa funzione può essere disattivata con l'opzione 'ANSI_QUOTES', che farà in modo che si riferiscano agli identificatori come per lo standard ANSI SQL (come i backtick non standard nella query precedente). – bobince
12.75 è esattamente rappresentabile in binario (1100.11), quindi non vedo come passa il test "> 12.75". Sei sicuro che non ci siano altri punti> 12.75 nella tua lista? –