728x90
Oracle 의 경우에는 INITCAP Function이 기본적으로 제공되어 아래와 같이 사용하면 Snakecase 문자열을 Camelcase 로 변환할 수 있다
Oracle INITCAP
Function 사용예시
SELECT SUBSTR(REPLACE(INITCAP('1' || 'abc_ddd_hhh_ooo_ddd'), '_'), 2) CAMELCASE FROM DUAL;
결과:
abcDddHhhOooDdd
MySQL의 경우 해당 Function이 기본적으로 제공되지 않는 관계로 아래와 같이 직접 생성해서 사용해야된다
initcap Function 작성
DELIMITER $$
DROP FUNCTION IF EXISTS `schema`.`initcap`$$
CREATE FUNCTION `initcap`(x char(30)) RETURNS char(30) CHARSET utf8
READS SQL DATA
DETERMINISTIC
BEGIN
SET @str='';
SET @l_str='';
WHILE x REGEXP ' ' DO
SELECT SUBSTRING_INDEX(x, ' ', 1) INTO @l_str;
SELECT SUBSTRING(x, LOCATE(' ', x)+1) INTO x;
SELECT CONCAT(@str, ' ', CONCAT(UPPER(SUBSTRING(@l_str,1,1)),LOWER(SUBSTRING(@l_str,2)))) INTO @str;
END WHILE;
RETURN LTRIM(CONCAT(@str, ' ', CONCAT(UPPER(SUBSTRING(x,1,1)),LOWER(SUBSTRING(x,2)))));
END$$
DELIMITER ;
snake_to_camel Function 작성
DELIMITER $$
DROP FUNCTION IF EXISTS `schema`.`snake_to_camel`$$
CREATE FUNCTION `snake_to_camel`(str varchar(255)) RETURNS varchar(255) CHARSET utf8
READS SQL DATA
DETERMINISTIC
BEGIN
RETURN substr(replace(initcap(concat('1',replace(str,'_',' '))),' ',''),2);
END$$
DELIMITER ;
사용
snake_to_camel
Function 사용예시
select snake_to_camel('abc_ddd_hhh_ooo_ddd') camel;
결과:
abcDddHhhOooDdd
initcap
Function 사용예시
select substr(replace(initcap(concat('1',replace('abc_ddd','_',' '))),' ',''),2) initcap;
결과:
abcDdd
Oracle INITCAP 참조: https://dorongdogfoot.tistory.com/88
MySQL initcap 참조: http://www.gurubee.net/article/84002
MySQL initcap 참조: https://stackoverflow.com/questions/12364086/how-can-i-achieve-initcap-functionality-in-mysql
728x90
'DataBase' 카테고리의 다른 글
[MySQL] You can't specify target table 에러 발생시 (0) | 2022.06.29 |
---|---|
[MongoDB] 카카오와 MongoDB 내용 정리 (0) | 2021.01.03 |
댓글