我需要找到一种在数据库中查找字段的方法;数字上,是与用户在网络表单中输入并提交的内容匹配。
更深入的解释:
在数据库表中有两行,字段条目为80.1和80.7。如果站点用户在Web表单上的输入元素中输入80并提交该值,则处理脚本会查找该表并找到一个包含80.1的行,并选择此作为壁橱匹配。
如果是相反的方向,即用户输入浮动整数(80.6),则该表寻找最接近的舍入数,即(90),这将是容易的。我显然错过了一些东西,并且认为在PHP中会有一个内置函数。
如果我没有解释好自己,请道歉,如果是,请告诉我。
答案 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