当我们知道sql中的干草堆时搜索针

时间:2015-04-13 04:50:17

标签: php html mysql phpmyadmin codeigniter-2

我有一个包含许多国家/地区代码及其相应国家/地区名称的数据库 例如:

mauritius   230
canada      1
testcountry 1234

每个国家/地区的起始编号可能介于1到5之间。用户将输入任何电话号码,例如23012345678,输出应为mauritius

如何在数据库中执行此类SQL查找?我在想我可以输入5个子字符串:

2
23
230
2301
23012

并找到一个匹配,但这效率不高。知道怎么办吗? (PHP)

1 个答案:

答案 0 :(得分:0)

您可以通过在列后使用通配符将您的代码列与电话号码相匹配来使用类似的查询,以便它只匹配起始字符

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