2012-05-04 4 views
0

특정 지문과 일치하는 항목을 찾으려고하지만 오라클의 와일드 카드는별로 정확하지 않습니다.오라클 SQL 사용자 지정 와일드 카드

지문이 될 것이라고 : WHERE 기호 LIKE '% _ #### @'ESCAPE '\'은 (는 % 와일드 카드) 이전에 오는 중요하지 않습니다


다음 밑줄입니다
다음 네 개의 숫자는 (#)
마지막 문자 AZ (@)가

내가 번역 기능을 사용하여 몇 가지 물건을 발견했습니다 ('\'로 이스케이프) 그러나 나는 그것이 작동되도록 할 수 없었다 . 지금은 정규 표현식을 조사 중이지만 이전에는 사용하지 않았습니다. 나는 그들이 무엇인지, 어떻게 내 문제를 해결할 수 있는지 이해하려고 노력하고있다.

답변

2

LIKE가 아닌 정규식을 사용하려는 것처럼 들립니다. "지문"은 정규 표현식 [_][[:digit:]]{4}[A-Z]에 의해 캡처 된 것으로 보이므로 regexp_instr을 사용하여 지문이 있는지 (그리고 문자열의 어떤 위치에 있는지) 확인할 수 있습니다. 이 경우, 문자열 '_1234B'는 제 문자열 지문이고, 이는 또한 오히려`REGEXP_INSTR`보다 WHERE 절에`REGEXP_LIKE` 조건을 사용하는 것이 가능할 것이다 위치 7

SQL> ed 
Wrote file afiedt.buf 

    1 with x as (
    2 select 'sb1234_1234Bdelta' str from dual union all 
    3 select 'no match' from dual 
    4 ) 
    5 select str, 
    6   regexp_instr(str, '[_][[:digit:]]{4}[A-Z]') 
    7 from x 
    8* where regexp_instr(str, '[_][[:digit:]]{4}[A-Z]') > 0 
SQL>/

STR    REGEXP_INSTR(STR,'[_][[:DIGIT:]]{4}[A-Z]') 
----------------- ------------------------------------------ 
sb1234_1234Bdelta           7 
+0

시작 기능. –