특정 값만 삭제하고 싶습니다. 0 11 1,910

by 구루비 [2016.10.27 17:55:15]


오늘따라 계속 질문만 드리네요..ㅠㅠ

예를들어 title라는 필드에 [우리나라1] 안녕하세요..

이런식으로 [우리나라1] 이 공통적으로 들어있습니다.

그런데 제목에 들어가는 패턴이 [우리나라 1] , [우리나라 2]...

이런식으로 숫자값이 점점 올라갑니다.

이럴 경우에 

기존 : [우리나라 1] 안녕하세요

변경 : 안녕하세요

이런식으로 [] 안에 있는 값들과 []까지 모두 삭제하고 나머지 부분만 그대로 저장할려면 어떤식으로 쿼리를 잡아줘야할까요?

by jkson [2016.10.28 09:50:18]
with t as
(
select '[우리나라 1] 반갑습니다 [우리나라 2] 안녕하세요.' txt from dual
)
select regexp_replace(txt,'\[[^[]+\]','') from t

 


by Kyle [2016.10.28 10:19:17]

위의 jkson 님의 쿼리에서 중괄호 '[ ]' 가 타이틀 중간에 들어가는건 그대로 남겨두고 싶을 경우

아래 부분만 추가 하면 됩니다.

regexp_replace(txt,'^\[[^[]+\]','')

 


by 구루비 [2016.10.28 10:25:06]

jkson님, Kyle님 답변 감사합니다.

말씀해주신대로 했는데..

Invalid regular expression in regexp function. 
이런 에러가 나옵니다.

 


by Kyle [2016.10.28 11:09:57]

실행하신 쿼리를 올려봐 주세요

정규식을 옮기는 중간에 잘못들어 간거 같은데 쿼리를 봐야 확인이 가능 할듯 하네요


by 구루비 [2016.10.28 11:33:43]

적어주신 쿼리를 그대로 작성을 해보니 그런 결과가 나왔습니다.

 

with BD_164 as
(
select title txt from dual
)
select regexp_replace(txt,'^\[[^[]+\]','') from t;

게시판명은 BD_164이고 적용할 필드는 title이라는 필드입니다.


by Kyle [2016.10.28 12:30:21]
with t as
(
select title txt from BD_164
)
select regexp_replace(txt,'^\[[^[]+\]','') from t;

 

테이블명 적용을 잘 못하셨네요

 

select regexp_replace(title,'^\[[^[]+\]','') from BD_164;

위에 둘중에 하나를 사용해 보세요

 

 

 


by jkson [2016.10.28 12:33:58]

이대로 적으셨다면 Invalid regular expression in regexp function 에러 나기 이전에 'ORA-00904 ~ 부적합한 식별자' 에러부터 떴을 것 같은데요.. 해당 에러가 날 때 실제 실행하신 쿼리를 올려보세요.


by 구루비 [2016.10.28 13:18:04]

with t as
(
select title txt from BD_164
)
select regexp_replace(txt,'^\[[^[]+\]','') from t;

이런식으로 실행을 해봐도 똑같은 에러가 나옵니다.

jkson님.. 제가 사용하는 툴이 TiberoAdmin 툴인데 거기에서는 위와같은 에러만 나옵니다.

실행쿼리는 위에 적어놓은것과 동일합니다.


by jkson [2016.10.28 13:56:57]

티베로인가요? 정규식이라 크게 다를 것 같진않은데..

일단은

select replace(title,substr(title,instr(title,'['), instr(title,']')),'') from BD_164

이렇게 해보세요. 첫번째 []는 없앨 수 있습니다.

 


by 구루비 [2016.10.28 14:36:51]

jkson님 답변 감사합니다.

그런데 그런식으로 해도 [] 과 [] 안에있는 내용이 그대로 출력이 됩니다.
티베로가 사용법이 좀 다를까요?? 제가 알기로는 거의 동일한걸로 알고있는데..ㅠㅠ


by jkson [2016.10.28 15:21:45]

티베로랑 replace , instr 사용법이 동일할텐데요. 제가 적어드린 방법이 첫번째 [에서 첫번째 ]까지의 문자열을 replace 하는 내용이라 이해만 하셨다면 여러가지 방법으로 테스트 해보시면 될 것 같습니다.

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