REGEXP_REPLACE를 이용한 단어변경 질문 드립니다. 0 6 2,693

by 숨바꼭질 [2015.01.05 11:36:11]


with t as (select '1st APPLE' text from dual union all
           select '2nd apple' text from dual union all
           select '3th APPLE apple' test from dual )
select text
      ,REGEXP_REPLACE(text,'(APPLE|apple)',(CASE WHEN text like '%APPLE%' THEN 'PINEAPPLE'
                                                 WHEN text like '%apple%' THEN 'pineapple' END) )
  from t;

 

위와 같은 조회쿼리가 있습니다.

대문자가 대문자로, 소문자가 소문자로 변경이 되어야 합니다.

만약, 대소문자가 같이 존재했을 때, 각각 대소문자로 변경되어야 한다면

어떻게 처리해야 되는지 궁금합니다...

by 마농 [2015.01.05 11:44:57]

대소문자가 같이 존재했을 때, 각각 대소문자로 변경되어야 하는 예시 자료와 결과자료도 올려 주셔야죠.

APPle => ???


by 숨바꼭질 [2015.01.05 12:14:07]

대소문자가 같이 존재 한다는게 혼용된 Apple 이런게 아니라

APPLE 이거나 apple 둘 중 하나의 단어로 되어 있습니다.

즉 하나의 라인에 APPLE 이라는 단어와 apple 이라는 단어가 존재 한다는 경우입니다...


by 아발란체 [2015.01.05 11:46:59]

음... 대문자가 대문자로, 소문자가 소문자로 되어야 한다면 굳이 변경을 안해도 될 것 같은데...용? ㅋ

그리고 위 정규식 처리한 것은 무엇인가요? 헷갈리게 하는 정보 같습니다.

그냥 어떤 데이타가 어떻게 나왔으면 좋겠다.... 가 좋은 단서가 될 것 같습니다.


by 숨바꼭질 [2015.01.05 12:17:09]

질문을 읽어보니 좀 이상하네요.. 죄송합니다..

사과라는 단어를 파인애플로 변경하고자 할 때

기존 라인의 단어가 대문자 또는 소문자가 존재합니다.

그래서, APPLE 을 FINEAPPLE로 변경하고자 하는데

apple 이 존재할 수도 있으니 fineapple 로도 변경가능해야 된다는 것입니다.

예) I like apple. Do you like APPLE ?

=> I line fineapple. Do you like FINEAPPLE ?

이런 식으로 입니다.


by 비주류 [2015.01.05 12:31:25]

regexp 로 한번에 되는지 모르겠지만... 단순 변경이라면 그냥 replace 여러번 써보시는건 어떤가요?

REPLACE(REPLACE(text, 'APPLE', 'PINEAPPLE'), 'apple', 'pineapple')


by 숨바꼭질 [2015.01.05 14:35:43]

감사합니다.

어렵다고 생각해서인지 어떻게할지 모르는 상황이라..

잘 해결되었습니다.

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