I have a Joomla system and I\'m trying to change the search so that it correctly finds floating point values in the database.
So, I have a query that is built at runtime
I found a way to check for what my users view as equality.
I had to convert the field to a character string and test the character sets, so this works fine for them:
select 'column1'
from 'some_table'
where CAST('some_float_field' AS CHAR) <=> '2.18'
I know these is an old post but if you don't want a precise comparison just use LIKE or NOT LIKE :
select 'column1'
from 'some_table'
where 'some_float_field' NOT LIKE '2.18'
Usually with these types of questions it's good to provide a small example to replicate your results.
Usually testing for exact float values is a bad idea since floating point precision isn't an exact science. It's much better to use some tolerance.
create table foo1 (col1 float);
insert into foo1 values (2.18);
select * from foo1 where abs(col1-2.18) <= 1e-6
Consider this:
where abs(some_float_field) - 2.18 < 0.001
Here is an easy way to do this
Just write where some_float_field LIKE 2.18
Hope it will help ;)