目前正在使用Mysql和PHP。
寻找一个带数字的查询并找到一组数字开头的壁橱匹配,例如我有一个数字019235678910, 026725678910, 026825678910
,我的表看起来像这样。
Table - Destintation
Name Number
Watford 01923
Oxford 026
Romford 026
Crawford 0267
Topford 02672
因此,当我通过019235678910
时,结果为Watford
,026725678910
为Topford
,026825678910
为Oxford
和{{ 1}}。
我也不确定MYSQL是否可以直接执行此操作,还是需要与PHP一起使用?
答案 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, '%')