在数据库中查找与用户在php中输入的内容最接近的数字匹配

zea*_*eal 6 php mysql

我需要找到一种在数据库中查找字段的方法; 在数字上,是与用户在网络表单中输入并提交的内容匹配.

更深入的解释:

在数据库表中有两行,字段条目为80.1和80.7.如果站点用户将80输入到Web表单上的输入元素并提交该值,则处理脚本将查找该表并查找具有80.1的行,并选择此作为壁橱匹配.

如果是另一种方式,即用户输入浮动整数(80.6),该表寻找最接近的舍入数,即(90),这将是容易的.我显然错过了一些东西,并认为PHP中会有一个内置函数.

如果我没有解释好自己,请道歉,如果是,请告诉我.

Mar*_*c B 31

SELECT ABS($user_value - numeric_field) as nearest, ...
FROM yourtable
ORDER BY nearest ASC
LIMIT 1
Run Code Online (Sandbox Code Playgroud)

基本上,取你想要的数字字段和用户提供的值的差值,然后按差异升序排序,然后返回第一行.

因此,完全匹配将具有0的差异并且首先出现.如果没有完全匹配,则选择"最接近"的那个.

  • 比我认为的接受的答案要好得多 (8认同)

Gow*_*wri 3

尝试这个

SELECT * FROM `table_test1` where `price` > 80 order by `price` asc limit 1
Run Code Online (Sandbox Code Playgroud)

  • 因此,如果数据库的值是 79.9 和 180,而您的目标是 80.0,那么它会选择 180 作为正确答案,您对此感到满意吗?或者我错过了什么? (4认同)