2016-02-08 56 views
0

我有一个表,其中包含一行电话号码前缀和每行前缀的价格行。如何在MySQL表中搜索最准确的匹配

样品表:

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

在网站上,用户将被要求插入一个电话号码(如21366123456),在那里我有搜索数据库表的最精确的匹配。

在这种情况下,即使有213在表的前缀值,我会需要的21366.

结果这又如何使用简单的MySQL查询来完成,用户无需执行递归循环输入值?

回答

1

试试这个:

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

Demo here

+0

惊人。谢谢 –