database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 41899 게시물 읽기
No. 41899
REGEXP_LIKE 정규표현식에 NOT 조건 사용 질문입니다.
작성자
김지훈(sleeplessi)
작성일
2022-12-07 15:07ⓒ
2022-12-08 09:04ⓜ
조회수
1,192

안녕하세요.

오라클 중초보입니다.

REGEXP_LIKE를 사용하는데 CASE를 여럿 만들어 사용하다보니 한계가 있어 문의 드립니다.


현재 컬럼에 '주소'를 포함한 값 중 IP주소 는 제외하여 CASE 문의 'OK'를 출력 하고 싶은데

좀처럼 되지가 않습니다. AND NOT 조건을 추가 하여 풀고 싶으나 CASE가 100여개가 되며 공통으로 돌아가 작성되는 프로그램이라 AND NOT 조건은 넣을수가 없는 상황입니다.

아래의 데이터 예로 작성해보았습니다.


SELECT CASE WHEN REGEXP_LIKE('IP주소','(?!IP)주소') THEN 'OK' ELSE 'FAIL' END FROM DUAL  -- OK가 나와야함

UNION ALL 

SELECT CASE WHEN REGEXP_LIKE('집주소','(?!IP)주소') THEN 'OK' ELSE 'FAIL' END FROM DUAL  -- FAIL이 나와야함


그런데 위를 실행해보면 모두 FAIL이 나옵니다. (?!IP) 가 NOT IP 조건이 아니라는건데 혹시 해당 조건은 정규식으로 어떻게 풀어야 할까요?

정규표현식은 너무 어렵네요.

혹시나 위의 정규표현식 NOT 조건 케이스를 경험해 보신분이 있으면 알려주셨으면 합니다.


감사합니다.

 

이 글에 대한 댓글이 총 1건 있습니다.

굳이 정규식이 필요한가요?

단순 문자 비교하면 될 듯 한데요? LIKE 나 INSTR 등

부정 조건은 비교식 에 그냥 NOT 을 붙여주면 됩니다.

-- 긍정조건 --

REGEXP_LIKE(컬럼,'IP주소')

컬럼 LIKE '%IP주소%'

INSTR(컬럼, 'IP주소') > 0

-- 부정조건 --

NOT REGEXP_LIKE(컬럼,'IP주소')

컬럼 NOT LIKE '%IP주소%'

INSTR(컬럼, 'IP주소') = 0

-- '주소'를 포함하면서 'IP주소'가 아닌 조건 --

컬럼 LIKE '%주소%' AND 컬럼 NOT LIKE '%IP주소%'

INSTR(컬럼, '주소') > 0 AND INSTR(컬럼, 'IP주소') = 0

마농(manon94)님이 2022-12-07 16:58에 작성한 댓글입니다.
이 댓글은 2022-12-07 17:07에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
41928오라클 sched.jobs 생성시 시간 설정문의 [2]
량디
2023-01-05
903
41901그룹 관련 질문 입니다. [2]
봉달이
2022-12-27
1100
41900세로 데이터를 가로로 표시관련 문의 [1]
진태만
2022-12-19
1239
41899REGEXP_LIKE 정규표현식에 NOT 조건 사용 질문입니다. [1]
김지훈
2022-12-07
1192
41898시간 대비 값이 증감여부 확인하여 데이터 축출 관련 [1]
shitline
2022-12-02
1202
41897중복 제외 [1]
KIM
2022-12-01
1084
41896시간 튜닝이 필요합니다.
신승익
2022-11-16
1102
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다