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

时间:2011-04-15 14:10:52

标签: php mysql

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

更深入的解释:

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

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

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

4 个答案:

答案 0 :(得分:31)

SELECT ABS($user_value - numeric_field) as nearest, ...
FROM yourtable
ORDER BY nearest ASC
LIMIT 1

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

因此,精确匹配的差异为0并首先出现。如果没有完全匹配,那么选择“最接近”的那个。

答案 1 :(得分:3)

试试这个

SELECT * FROM `table_test1` where `price` > 80 order by `price` asc limit 1

答案 2 :(得分:3)

SELECT ABS(price - 80) AS nearest FROM table ORDER BY nearest ASC LIMT 1;

答案 3 :(得分:1)

很难给出确切的答案,但是这里有一些伪SQL可能会帮助你:

SELECT number, abs((number * 100) - ({$search_number} * 100)) AS distance 
FROM your_table 
ORDER BY distance 
LIMIT 1