我有一个表,该表的字段(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%'
SELECT * from phone_data WHERE phone_number LIKE '%9%9%9%9%9%9%9%9%7%9%'
也许您可以摆脱像这样的东西:顺便说一句,我通常在插入之前在PHP中剥离类似的内容。