我正在开发客户拥有的遗留系统。电话号码以多种方式存储。例如:
514-879-9989
514.989.2289
5147899287
客户希望能够通过电话号码搜索数据库。
如果不规范数据库中存储的数据,如何实现这一目标?这可能吗?
我想知道是否可以有一个如下所示的查询:
SELECT FROM table WHERE phonenumber LIKE %input%
但这只考虑了数据库中的数字字符?
最佳答案
$sql = "SELECT * FROM tab
WHERE replace(replace(phone, '.', ''), '-', '') like '%". $input ."%'"
是的,您可以根据表中的值添加更多替换,如@spencer7593所述,例如:
$sql = "SELECT * FROM tab
WHERE replace(replace(replace(replace(replace(replace(phone, '.', ''), '-', ''), '+', ''), '(', ''), ')', ''), ' ', '') like '%". $input ."%'"
但我更愿意在查询之前清理数据。
关于mysql - 仅检查数据库中数字字符的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38884593/