2016-11-28 1 views
0

SQL 테이블에 데이터 열이 있는데 첫 번째 전달 후에 'BVH'및 'BVG'로 시작하는 데이터 만 포함됩니다. 그 뒤에 3 개의 숫자가 있고 더 이상의 문자가없는 데이터 만 포함하기를 원합니다. 나는이 편지가 처음 3 글자 다음 제 1, 제 2, 제 3 (또는 다중) 위치에 빠질거야 알고하지 않는 한 나는 expersion의 끝 부분을 문자 만 일치시킵니다. SQL ORACLE

OUC not like 'BVG%[a-z]%' and OUC not like 'BVH%[a-z]%' 

을 시도했습니다. 나는 또한 당신이 무엇을 필요가

예 데이터

BVH122 
    BVH174 
    BVH336 
    BVH123 
    BVH447 
    BVH447 
    BVH321 
    BVH573 
    BVG1NS 
    BVG1T2 
    BVH283 
    BVH172 
    BVG12T 
    BVG1T2 

답변

0

을 표시려고하고있는 무슨 문자를 정확히 알 수 없다?

with dat as (select 'BVH122' a from dual 
    union all select 'BVH174' a from dual 
    union all select 'BVG1NS' a from dual 
    union all select 'BVH172' a from dual 
    union all select 'BVG12T' a from dual 
) 
select * from dat where regexp_like(a,'[A-Z]{3}[0-9]{3}'); 

그래서 쿼리는 다음과 같습니다

select * from table where regexp_like(OUC,'BV[GH]{1}[0-9]{3}'); 
+0

이 정확히 있다고! 내가 검색을했지만 SQL에 필터와 같은 regexp를 사용할 수 있다는 것을 알지 못했습니다. 도움을 주셔서 감사합니다! –

관련 문제