3

我目前正在使用 Mysql 和 PHP。

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

Table - Destintation

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

因此,当我通过时019235678910,结果将是Watford, 026725678910will beTopford026825678910will be Oxfordand Romford

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

4

2 回答 2

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显然是一个字符字段。就个人而言,我认为将字符字段称为“数字”是不好的做法——这就是所谓的认知失调。

于 2013-01-23T15:56:46.593 回答
0
SELECT Name, Number
FROM Destintation
WHERE LEFT('026725678910', LENGTH(Number)) = Number

也许

WHERE '026725678910' LIKE CONCAT(Number, '%')
于 2013-01-23T15:45:59.467 回答