我有一个包含许多国家/地区代码及其相应国家/地区名称的数据库
例如:
mauritius 230
canada 1
testcountry 1234
每个国家/地区的起始编号可能介于1到5之间。用户将输入任何电话号码,例如23012345678,输出应为mauritius
。
如何在数据库中执行此类SQL查找?我在想我可以输入5个子字符串:
2
23
230
2301
23012
并找到一个匹配,但这效率不高。知道怎么办吗?
(PHP)
1 个答案:
答案 0 :(得分:0)
您可以通过在列后使用通配符将您的代码列与电话号码相匹配来使用类似的查询,以便它只匹配起始字符 p>
select *
from countries
where '23012345678' like concat(`code`,'%') > 0
DEMO
根据评论进行修改
您可以在代码列中使用length()
功能,并为大多数匹配的国家/地区代码订购最长的结果
select *
from countries
where '23012345678' like concat(`code`,'%') > 0
order by length(`code`) desc
limit 1
DEMO 2