0

我想查找与以下模式不匹配的数据:

  • 任意数量的分隔符
  • 2个号码
  • 任意数量的分隔符
  • 2个号码
  • 任意数量的分隔符
  • 2个号码
  • 任意数量的分隔符
  • 2个号码
  • 任意数量的分隔符
  • 2个号码
  • 任意数量的分隔符

为此,我使用了这个查询,但它似乎不起作用:

select distinct regexp_replace(phonenumber, '[0-9]', '') 
from coord 
where REGEXP_LIKE(phonenumber, '^[ ./]{*}[0-9]{2}[ ./]{*}[0-9]{2}[ ./]{*}[0-9]{2}[ ./]{*}[0-9]{2}[ ./]{*}[0-9]{2}[ ./]{*}$')

我做错什么了 ?

4

1 回答 1

3

假设您要搜索与您的模式匹配的记录,只需将您{*}替换为*

SELECT DISTINCT regexp_replace(phonenumber, '[0-9]', '')
  FROM coord 
 WHERE regexp_like(phonenumber,
                   '^[ ./]*[0-9]{2}[ ./]*[0-9]{2}[ ./]*[0-9]{2}[ ./]*'
                   ||'[0-9]{2}[ ./]*[0-9]{2}[ ./]*$')

如果要选择与此模式不匹配的记录:

SELECT DISTINCT regexp_replace(phonenumber, '[0-9]', '')
  FROM coord 
 WHERE NOT regexp_like(phonenumber,
                       '^[ ./]*[0-9]{2}[ ./]*[0-9]{2}[ ./]*[0-9]{2}[ ./]*'
                       ||'[0-9]{2}[ ./]*[0-9]{2}[ ./]*$')
于 2012-06-27T11:46:07.340 回答