不考虑SQL的电话号码搜索

时间:2019-05-24 20:28:21

标签: sql

假设我的电话号码存储在数据库中,例如555-555-5555或(555)-555-5555。我希望当用户的搜索字词为“%55555%”时会匹配。我知道我可能应该清理并统一数据库中的数据。但是这次我无法修改数据库中的任何内容。我想知道是否有办法忽略连字符,括号等。

2 个答案:

答案 0 :(得分:2)

您可以删除字符:

where replace(replace(replace(phone, '-', ''), ')', ''), '(', '') like '%55555%'

答案 1 :(得分:1)

在MariaDB,MySQL 8 +,Oracle和PostgreSQL中,您可以使用正则表达式删除所有非数字的内容:

SELECT * FROM tbl WHERE REGEXP_REPLACE(phone,'[^0-9]','') LIKE '%5555555%'