首页 > 解决方案 > 选择 field1 或 field2 或 field3 与电话号码相同的位置

问题描述

我正在看一张带有 phone1、phone2 和 mobile 的桌子。但是,电话字符串的格式不正确。

电话号码基本上是这样的自由文本:

row1: phone1:19123123123
row2: mobile:+1 912 123 123
row3: phone2:1 912 123 123
row4: mobile:(+1) 912 123 123
row5: phone2:(+1)912-123-123

是否可以编写一个 SQL 查询来查找 phone1、phone2 或 mobile 字段之一是否为 +19123123123,但它需要能够匹配这些自由文本示例中的任何一个?谢谢

因此,在上面的示例中,它应该返回所有 5 条记录,即那些与该电话号码匹配的自由文本,并且位于 3 个字段之一中。

标签: mysqlsql

解决方案


假设+列中只有数字和电话号码,您可以使用:

where regexp_replace(col, '[^+0-9]', '') = '+19123123123'

这将删除不是+数字或数字的所有内容。


推荐阅读