오라클 정규식 질문 드립니다. 0 4 780

by 픽칼 [SQL Query] [2018.02.12 16:37:20]


안녕하세요.

특정 필드에 2자리 코드 값이 들어있습니다.

21,23번 코드가 아닌 코드값을 구하는 것을 정규식으로 하고 싶습니다.

숫자2가 아닌 것은 되는 데 21 혹은 23 아닌 것은 잘 안 되네요.

도움 부탁드립니다.

감사합니다.

by 우리집아찌 [2018.02.12 16:43:55]
WITH T AS (
SELECT '2'|| TO_CHAR(LEVEL - 1) VAL FROM DUAL CONNECT BY LEVEL <= 10
)
SELECT CASE WHEN VAL NOT IN ( '21','23') THEN VAL ELSE 'X' END VAL 
  FROM T 

 


by 픽칼 [2018.02.12 16:44:48]

죄송합니다. 제가 질문을 잘못 했네요. 위와 같이는 구할 수 있는 데 지금 정규식을 공부중이라 꼭 정규식으로 하고 싶습니다.

답변 감사합니다.


by 우리집아찌 [2018.02.12 17:37:25]
WITH T AS (
SELECT '2'|| TO_CHAR(LEVEL - 1) VAL FROM DUAL CONNECT BY LEVEL <= 10
)
SELECT VAL
     , REGEXP_INSTR(VAL,'21|23') VAL2
  FROM T

 


by 마농 [2018.02.12 16:50:02]

긴 문자열중에 다양한 케이스가 존재하면서 특정 패턴을 검색한다면 정규식이 필요하지만.
2자리 고정 코드값중 딱 두가지만 검색하는데에는 정규식이 불필요해 보입니다.
왜? 굳이 정규식을 사용하려는지 모르겠네요?
1. 일반식
 WHERE code NOT IN ('21','23')
 WHERE code != '21' AND code <> '23'
2. 정규식
 WHERE NOT REGEXP_LIKE(code, '21|23')
공부를 위한다고는 하지만 뭔가 그럴듯한 예를 가지고 공부하는게 좋을 듯 하네요.
즉, 일반식으로는 풀기 어려운 문제를 정규식으로 풀어내야지.
일반식으로 매우 쉬운걸 정규식으로 어렵게 풀 필요는 없죠.

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