2014-04-07 2 views
1

약 50 개의 문자열 형식 (예 : 00-000-000, 123-456-789-123AAA, CHE-123.456.789IVA ... 등)이 있습니다. 다른 나라의 TAX 등록 번호 형식입니다. 국가 별 형식을 따르는 지 여부는 각 회사 세금 등록 번호를 확인해야합니다. 나는 2 가지 수준의 적합성을 점검 할 필요가있다.
1. 문자열 및 하위 문자열에 대한 자릿수 (예 : 11-111-11에서 첫 번째 대시 앞에 두 자리 숫자 등)
2. 각 문자열의 숫자 유형 (문자 수).SQL에서 문자열 형식 확인 - ORACLE

SQL로 가능합니까? 몇 가지 기능을 시도해 보았지만 크기와 문자열의 길이에 대한 것이 었습니다. 형식이 아닙니다.

+1

지금까지 시도한 것을 보여줄 수 있습니까? – Slim

+1

견본을 가지고 더 설명해 주시겠습니까? – Hamidreza

+0

[regexp_like] (http://docs.oracle.com/cd/B12037_01/server.101/b10759/conditions018.htm)와 같은 것을 시도해 볼 수는 있지만, 내가 아는 한 매우 빠르지는 않습니다. – Christian

답변

3

정규식을 사용하는 것이 가장 좋습니다. 그러나 모든 국가 형식에 대해 정의해야합니다. 이 번호는 사회 보장 번호입니다 : 3 개의 숫자, 대시, 2 개의 숫자, 대쉬, 4 개의 숫자.

create table re (country varchar2(10),reg varchar2(100)); 

insert into re values ('us','^[0-9]{3}-[0-9]{2}-[0-9]{4}$'); 

select 
    case when regexp_like('987-65-4321' ,reg) 
     then 'Match Found' 
     else 'No Match Found' 
    end as output 
from re 
where country = 'us'; 

Match Found