-
SQL을 활용해서 스네이크 케이스를 카멜 케이스로 바꾸기개발/Database 2018. 7. 26. 16:51
INITCAP() 이라는 함수를 써서 쉽게 바꿔줄 수 있다.
물론 딸랑 INITCAP() 하나만 써서는 안되고 다른 함수들을 같이 섞어서 써주면 가능
결론만 먼저 말하자면 아래처럼 쓰면 된당
SUBSTR ( REPLACE ( INITCAP ( '1' || 대상문자열 ), '_' ), 2)
이제 안에서부터 하나씩 쪼개보겠음
1. INITCAP()
- 대상 문자열에서 각 단어의 첫 글자만 대문자로, 나머지는 소문자로 변환
- '1' || 'ABC_DEF_GHI' 로 문자열 앞에 '1' 은 왜 붙였나?
∵ INITCAP 을 쓰면 무조건 단어의 첫글자를 대문자로 변환해주는데,
카멜 케이스는 맨 앞 단어의 첫 글자는 소문자가 되야 하기 때문에
앞에 다른 문자를 아무거나 붙여서 맨 앞 단어의 첫 글자가 대문자가 되는 것을 방지해줌
- 쿼리
SELECT INITCAP('1' || 'ABC_DEF_GHI')
FROM DUAL
;
→ 실행결과
2. REPLACE()
- 변환한 문자열에서 언더바(_)를 제거
- 쿼리
SELECT REPLACE(INITCAP('1' || 'ABC_DEF_GHI'), '_') CAMELCASE
FROM DUAL
;
→ 실행결과
3. SUBSTR()
- SUBSTR('대상문자열', 분할 시작위치, [반환할 문자 개수])
- 맨 앞 단어의 첫글자가 소문자가 되도록 맨 앞에 문자를 아무거나 하나 붙여줬기 때문에 그 문자를 떼어내는 작업을 SUBSTR() 함수를 써서 진행
- 두번째 글자부터 끝까지 잘라주면 되기 때문에 분할 시작위치를 2로 선언
- 쿼리
SELECT SUBSTR(REPLACE(INITCAP('1' || 'ABC_DEF_GHI'), '_'), 2) CAMELCASE
FROM DUAL
;
→ 실행결과
'개발 > Database' 카테고리의 다른 글
PL/SQL 에서의 FUNCTION vs PROCEDURE (0) 2018.08.08 오라클 DB 테이블스페이스 용량 늘리기 (0) 2018.08.02 나도 WITH절을 써보자 (0) 2018.07.26 DELETE VS TRUNCATE VS DROP (0) 2018.07.26 DECODE 와 CASE : 과연 그놈이 그놈일까 (0) 2018.07.18 댓글