mysql - 仅检查数据库中数字字符的 SQL 查询

标签 mysql sql

我正在开发客户拥有的遗留系统。电话号码以多种方式存储。例如:

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/

相关文章:

sql - 重命名表,然后在oracle中创建同名表

MySQL,等于还是不等于?

mysql - 删除数据库,然后创建数据库会导致 SQL 语法错误

sql - MySQL:为什么使用 UTF-8

sql - 我可以从 JPA 查询对象获取 SQL 字符串吗?

mysql - 在日期范围之间进行选择并强制空行为 0?

mysql - 错误 1452 (23000) : Cannot add or update a child row: a foreign key constraint fails

mysql - mysql存储过程编辑器

MySQL 查询到 MS Access 查询

sql - SQL 全文搜索中使用通配符 (*) 和单词分组的智能搜索