Check for equality on a MySQL Float field

后端 未结 5 1563
失恋的感觉
失恋的感觉 2021-02-12 16:00

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

相关标签:
5条回答
  • 2021-02-12 16:26

    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'
    
    0 讨论(0)
  • 2021-02-12 16:34

    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'
    
    0 讨论(0)
  • 2021-02-12 16:36

    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
    
    0 讨论(0)
  • 2021-02-12 16:46

    Consider this:

    where abs(some_float_field) - 2.18 < 0.001
    
    0 讨论(0)
  • 2021-02-12 16:52

    Here is an easy way to do this

    Just write where some_float_field LIKE 2.18

    Hope it will help ;)

    0 讨论(0)
提交回复
热议问题