在数据库表中搜索电话号码

时间:2015-05-22 01:40:57

标签: php mysql

我有一个电话记录表

phones(id, number);

It may have values as:-
1, 9801234567
2, 980 1234568
3, 9779801234569
4, 9801234570
5, 977 980 1234 571

如果有人搜索980 1234567(带空格),我可以在运行查询之前删除空格以获得结果。

但我的问题是当有人搜索9779801234571并且条件是没有常规格式的数字时,它必须返回最后一条记录,即977 980 1234 571.任何想法如何有效地做到这一点?

2 个答案:

答案 0 :(得分:2)

这是一种方法:

 where replace(phonenumber, ' ', '') = replace($phonenumber, ' ', '')

有效地做这件事是另一回事。为此,您必须以规范格式在数据库中格式化您的电话号码 - 例如删除update语句中的所有空格。然后以相同的格式输入您要搜索的号码。然后,查询可以使用列上的索引。

答案 1 :(得分:2)

最好在将数据写入数据库之前从空白区域清除电话号码。您可以使用此功能轻松完成此操作:

$string = preg_replace('/\s+/', '', $string);

也许您还需要删除其他字符,例如-/

然后你可以使用一个简单的WHERE条件,没有花里胡哨。这也将显着提高SELECT语句的效果,因为您无需对数据进行转换即可找到正确的行。

这假设你当然是自己填充数据库。如果情况并非如此,请忽略此建议。