2012-06-27 3 views
0

내가 하지 일치하는 다음 패턴 할 것을 datas 찾으려면 전화 형식 일치 : 분리의오라클 SQL

  • 숫자
  • 이 번호를
  • 분리기의 수
  • 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}[ ./]{*}$') 

내가 뭘 잘못 했니?

+0

????? 뭐라 구요? – Oliver

+0

결과로 얻는 것은 무엇입니까? 'regexp_replace (phonenumber, '[0-9]', '')'는 의심 스럽습니다. 빈 문자열 목록을 가져 옵니까? –

답변

3

방금 ​​교체, 당신의 패턴과 일치하는 DO 기록을 검색 할 가정하여 {*}*과 :

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}[ ./]*$')