SQL查询字符串开头的最接近匹配

时间:2013-01-23 15:42:30

标签: php mysql sql

目前正在使用Mysql和PHP。

寻找一个带数字的查询并找到一组数字开头的壁橱匹配,例如我有一个数字019235678910, 026725678910, 026825678910,我的表看起来像这样。

Table - Destintation

Name     Number
Watford  01923
Oxford   026
Romford  026
Crawford 0267
Topford  02672

因此,当我通过019235678910时,结果为Watford026725678910Topford026825678910Oxford和{{ 1}}。

我也不确定MYSQL是否可以直接执行此操作,还是需要与PHP一起使用?

2 个答案:

答案 0 :(得分:2)

这是获得所有这些方法的一种方式:

select d.*
from Destination d join
     (select length(Number) as maxlen, number
      from destination d
      where YOURVALUE like concat(Number, '%')
      order by maxlen desc
      limit 1
     ) dsum
     on d.Number = dsum.Number

因为您正在寻找初始序列,所以数字上只有一个最大匹配(因此limit 1有效)。

顺便说一下,名为number的字段显然是一个字符字段。就个人而言,我认为打电话给一个角色字段" number" - 称为认知失调的东西。

答案 1 :(得分:0)

SELECT Name, Number
FROM Destintation
WHERE LEFT('026725678910', LENGTH(Number)) = Number

或者

WHERE '026725678910' LIKE CONCAT(Number, '%')