MySQL查询匹配某个字段,但删除所有非数字字符
但将查询中的字段预格式化以仅匹配数字...例如,我将电话号码存储为(123)555-1234
有人搜索时LIKE '%123555%',它将不会返回。
如何在搜索之前编写一个SQL查询来预格式化字段值... 类似下面这样:
SELECT * FROM Contacts WHERE FormatFieldHere(phoneNumber) LIKE '%123555%'
在MySQL 8.0中,您可以在比较之前使用functionREGEXP_REPLACE()
排除所有非数字字符,例如:
SELECT *
FROM Contacts
WHERE REGEXP_REPLACE(phoneNumber, '[^0-9]', '') LIKE '%123555%'
正则表达式的'[^0-9]'
意思是:除了数字以外的所有东西。使用此技术,您无需明确列出要忽略的每个字符。
还有一种方式:
SELECT * FROM Contacts
WHERE replace(replace(replace(replace(phoneNumber, '(', ''), ')', ''), '-', ''), ' ', '') LIKE '%123555%'
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。