通过电话号码选择格式不一致的行

问题描述 投票:0回答:2

我有一个表,该表的字段(phone_number(tinytext))包含各种无法预测的非标准格式的电话号码,尽管它们是键入的。不幸的是,我没有创建也不能更改数据集。示例:

+---+------------------+
| id|    phone_number  |
+---+------------------+
| 1 |  (999) 999-9999  |
| 2 |  +19999999979    |
| 3 |  999-999-9979    |
| 4 | (999)999-9999    |
| 5 |  999/999/9999    |
| 6 |  99-9999-9999    |
| 7 |  (999-9999999    |
+---+------------------+

[我需要做的是,给定一串连续的数字(即9999999979),我需要以相同的顺序查找包含相同数字的行。

因此,对于我的一般示例,我要匹配第2行和第3行,因为它们都按顺序具有所有数字(一旦删除了非数字字符)。基本上,我需要一种匹配的方法,但首先要删除所有非数字字符。

我尝试过REGEXP,REGEX_REPLACE,FIND_IN_SET,但似乎无法使它们中的任何一个起作用。

我正在寻找类似的东西(这当然不起作用):

SELECT * from phone_data WHERE phone_number REGEXP '^?![0-9]$' LIKE '%9999999979%'
mysql regex
2个回答
1
投票
SELECT * from phone_data WHERE phone_number LIKE '%9%9%9%9%9%9%9%9%7%9%'

0
投票

也许您可以摆脱像这样的东西:顺便说一句,我通常在插入之前在PHP中剥离类似的内容。

© www.soinside.com 2019 - 2024. All rights reserved.