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