开发者社区> 问答> 正文

MySQL查询匹配某个字段,但删除所有非数字字符

MySQL查询匹配某个字段,但删除所有非数字字符

但将查询中的字段预格式化以仅匹配数字...例如,我将电话号码存储为(123)555-1234

有人搜索时LIKE '%123555%',它将不会返回。

如何在搜索之前编写一个SQL查询来预格式化字段值... 类似下面这样:

SELECT * FROM Contacts WHERE FormatFieldHere(phoneNumber) LIKE '%123555%'

展开
收起
1476984019861890 2019-11-25 21:33:50 1431 0
1 条回答
写回答
取消 提交回答
  • 在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%'
    
    2019-11-25 21:37:41
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像