'NOT'을 사용하지 않는 이유를 알고 싶습니다. 하지만 재미를위한 정규식 솔루션을 찾고 있다면 REGEXP_LIKE가 오라클의 풍미가 부정적인 look-ahead를 지원하지 않기 때문에 작동하지 않을 것이라고 생각합니다. 그러나 상자 밖에서 조금 생각하고 패턴을 찾을 수 없으면 REGEX_REPLACE가 NULL을 반환한다는 것을 알기 때문에 다음과 같이 할 수 있습니다. (꼭 할 필요가 없기 때문에 REGEXP_LIKE와 함께 NOT을 사용합니다.)
SQL> with tbl(str) as (
select 'INDIAN STANDARD TIME' from dual union all
select 'ATLANTIC STANDARD TIME' from dual union all
select 'IRISH STANDARD TIME' from dual union all
select 'EASTERN STANDARD TIME' from dual union all
select 'PST STANDARD TIME' from dual union all
select 'CST STANDARD TIME' from dual
)
select str
from tbl
where str = regexp_replace(str, '^(INDIAN|ATLANTIC|IRISH) STANDARD.*TIME', 'DO NOT WANT THESE');
STR
----------------------
EASTERN STANDARD TIME
PST STANDARD TIME
CST STANDARD TIME
SQL>
이렇게하면 원하지 않는 문자열을 대체 한 다음 비교합니다. 일치 항목이 없기 때문에 select가 리턴하지 않습니다. 아직 깨끗하지 못함 :
select str
from tbl
where NOT regexp_like(str, '^(INDIAN|ATLANTIC|IRISH) STANDARD.*TIME');
"NOT"을 사용하지 않는 이유는 무엇입니까? –