如何在MySQL表中搜索最准确的匹配

时间:2016-02-08 09:04:33

标签: mysql

我有一个表格,其中包含一行电话号码前缀和每个前缀的一行价格。

样本表:

   prefix  |  price
 ---------------------
|  21366   |   0.15   |
|  2010    |   0.1    |
|  213     |   0.13   |
 ---------------------

在网站中,将要求用户插入电话号码(例如21366123456),我必须在数据库表中搜索最准确的匹配。

在这种情况下,即使表中的前缀值为213,我也需要21366的结果。

如何使用简单的MySQL查询来完成,而无需递归地循环用户输入值?

1 个答案:

答案 0 :(得分:1)

试试这个:

SELECT prefix, price
FROM mytable
ORDER BY LENGTH('21366123456') - LENGTH(REPLACE('21366123456', prefix, '')) DESC LIMIT 1

Demo here