오라클 REGEXP_LIKE 문의드립니다. 0 8 1,617

by DB초보자입니다 [Oracle 기초] [2017.09.28 20:44:58]


select * from
(
select 'DIAG01_CD' AS TEST from dual
union all
select 'DIAG02_CD' AS TEST from dual
union all
select 'DIAG03_CD' AS TEST from dual
union all
select 'DIAG10_CD' AS TEST from dual
union all
select 'DIAG10_AIS_CD' AS TEST from dual
 )A
where REGEXP_LIKE(TEST,'^DIAG[0-9]|_CD$')

 

정규식을 사용해서 DIAG01~10_CD같은 패턴만 검색을 하고싶은데

계속 DIAG10_AIS_CD 해당 데이터도 같이 출력이되네요..

DIAG02_CD 데이터만 뽑아낼수있는 정규식 조언해주시면 감사하겠습니다!

 

by jkson [2017.09.29 07:51:26]
select * from
(
select 'DIAG01_CD' AS TEST from dual
union all
select 'DIAG02_CD' AS TEST from dual
union all
select 'DIAG03_CD' AS TEST from dual
union all
select 'DIAG10_CD' AS TEST from dual
union all
select 'DIAG10_AIS_CD' AS TEST from dual
 )A
where REGEXP_LIKE(TEST,'^DIAG[0-9]+_CD$')

 


by DB초보자입니다 [2017.09.29 08:54:09]

감사합니다!!!!원하느결과를 얻을수있네요!


by 마농 [2017.09.29 08:47:35]
 WHERE REGEXP_LIKE(test, '^DIAG[0-9]{2}_CD$')
 WHERE test LIKE 'DIAG___CD'  -- 정답은 아니지만 이걸로도 충분할 듯 합니다.

 


by 우리집아찌 [2017.09.29 08:54:46]

-- 이제 ESCAPE 안붙여도 되나요? 위에건 잘되네요? 신기...

where TEST LIKE 'DIAG__#_CD' ESCAPE  '#' 

 


by DB초보자입니다 [2017.09.29 08:55:06]

LIKE 'DIAG___CD-> __요렇게 해도 된다는걸 처음알았씁니다....

아직 가야할길이 멀게만 느껴지네요 감사합니다!!


by 마농 [2017.09.29 08:57:54]

그래서 정답은 아니지만이라고 단서를 달았어요.
 - 마지막 _ 부분도 escape 처리를 해야 하고
 - 처음 두개 __ 도 딱 숫자만 체크하는 건 아니죠.
정답은 아니지만 실제 데이터가 어떻게 들어있느냐에 따라서
이걸로도 충분히 원하는 결과를 얻을 수 있지 않을까? 싶어서 답변 드렸습니다.


by 우리집아찌 [2017.09.29 09:00:37]

아 "_" 라서 다 들고오는거였네요.. 착각.. ㅋㅋ


by DB초보자입니다 [2017.09.29 09:03:27]

방금 구글에 like 언더바에 대해서검색해보고 ESCAPE  처리를해야되는게 아닌가..라는생각을갖고 

마농 님꼐 질문드리러왔는데 우리집아찌 님꼐서 먼저 같은 고민을 올려주셧네요!!

덕분에 궁금증 해결되엇씁니다!!!감사합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입