regexp_replace질문드립니다. _word 를 Word로 바꾸고 싶습니다. camel 표기법으로.. 0 8 4,632

by 물개 [Oracle 기초] regexp oracle camel [2018.07.18 14:03:59]


abc_def_ghi_jkl 문자열을 다음처럼 update 하고 싶습니다.

원하는 형태는 abcDefGhiJkl 입니다.

 

select regexp_replace('abc_def_ghi_jkl', '_(\w)', '\1') from dual;

abcdefghijkl --실행결과

-------------

--UPPER로 감쏴도 결과는 동일(함수 실행 순서 때문에 적용할 수 없는듯..)

select regexp_replace('abc_def_ghi_jkl', '_(\w)', UPPER('\1')) from dual;

abcdefghijkl --실행결과

 

데이타의 구성이

시작은 소문자로 되어있고

_의 개수는 2개부터 4개까지 구성되어 있습니다.

 

(_\w 문자를 찾아서 재귀처리로 해야할지..)

 

열심히 시도해 보다 글을 남기게 됩니다.

읽어주셔서 감사합니다. 

도움을 기다립니다. 

 

by 오늘도배워가는 [2018.07.18 15:11:52]

아래와 같이 해보시겠어요?

select 
  regexp_replace(initcap('abc_def_ghi_jkl'), '_(\w)', ('\1')) 
from dual;

 

 


by 물개 [2018.07.18 15:34:13]

오아 initcap 이란 함수가 있었네요!! 

select substr('abc_def_ghi_jkl', 0, 1) || substr(regexp_replace(initcap('abc_def_ghi_jkl'), '_(\w)', ('\1')) ,2) from dual;

이용해서 원하는 결과물 완성했습니다. 감사합니다.


by 우리집아찌 [2018.07.18 15:21:21]
SELECT REPLACE(INITCAP('abc_def_ghi_jkl'),'_') name FROM DUAL

 


by 물개 [2018.07.18 15:34:57]

동시에 두 분이 답을 주셨네요!!  정말 감사합니다.!!!
select substr('abc_def_ghi_jkl', 0, 1) || substr(REPLACE(INITCAP('abc_def_ghi_jkl'),'_'), 2) name FROM DUAL;

initcap을 쓰니 정규식이 필요 없네요!


by 우리집아찌 [2018.07.18 15:46:28]

늦었네요.. ㅎㅎ


by 신이만든지기 [2018.07.18 16:27:47]

와우! 저도 좋은 거 하나 배워갑니다.


by 마농 [2018.07.18 17:20:08]
SELECT SUBSTR(REPLACE(INITCAP('a'||v), '_'), 2) x
  FROM (SELECT 'abc_def_ghi_jkl' v FROM dual)
;

여러번 올라온 질문이네요.
2018.06.01  http://gurubee.net/article/79620
2017.10.26  http://gurubee.net/article/78435
2015.06.18  http://gurubee.net/article/65213


by 물개 [2018.07.19 13:38:34]

15년도에 이미 해결된 게 있었네요!!.. 'a'를 임의로 붙여서 변환 후 자른다. 멋지네요!

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