删除字段在MySQL中具有重复数字的行

时间:2018-03-08 15:44:02

标签: mysql sql regex

我有一个返回客户电话号码的查询。许多数字都是假的或无效的,客户已经在所有9个,全部1个,全部0个或两个的组合中输入。如何删除电话号码有x个重复数字的行,以便我可以消除无效数字,只显示有效数字的行?

我把它放在我的where子句中,但我不认为这是最好的方法。

where C.XBW-CELL-PHONE not in (0,9999999999,1111111111,1111110000)

 All Phone Numbers
 --------------
 9999999999
 9990000000
 1111111111
 9545205889
 8008772321
 1110001100
 9991111111


 Valid Phone Numbers
 --------------
 9545205889
 8008772321

2 个答案:

答案 0 :(得分:0)

这应该有效

 where C.XBW-CELL-PHONE not like '%000%' and
 not like '%111%' and
 not like '%222%' and
 not like '%333%' and
 not like '%444%' and
 not like '%555%' and
 not like '%666%' and
 not like '%777%' and
 not like '%888%' and
 not like '%999%';

但我认为您应该测试4个连续数字,3可能会删除实数。

答案 1 :(得分:0)

有效的:

WHERE   phone RLIKE '[2345678]'   -- existence of those digits --> allowed
   OR ( phone RLIKE '0' ) AND
      ( phone RLIKE '1' ) AND
      ( phone RLIKE '9' )         -- all 3 of [019] --> allowed

如果您想使用4位数字,请将0,1,9更改为0000,1111,9999

如果'2222223333'应该无效,那么您未能在问题中指明这一点。

历史课。当美国地区代码首次出现时,它们仅限于正则表达式

[2-9][01][2-9]

接下来的3位数字看起来不像区号。