by 후인구 [2021.02.03 23:30:16]
FIRST_REG_DT -> firstRegDt
FIRST_REG_ID -> firstRegId
LAST_MOD_DT -> lastModDt
LAST_MOD_ID -> lastModId
TABLE COLUMN_NAME을 CAMEL CASE로 변경하려고 합니다.
ORACLE에서는 INITCAP함수가 지원되어서 CAMELCASE로 용이합니다
MARIADB에서는 INITCAP함수가 지원이 되지 않습니다.
MARIADB 에서는 어떻게 쿼리로 구현해야 되나요?
'
select column_name
from information_schema.columns where table_name = '테이블명'
mariadb에는 initcap과 유사한 기능의 함수가 없어서 직접 만드셔서 사용하셔야합니다.
쿼리만으로는 어렵지 않을까요..
아래 링크에 있는걸 써봤는데 잘 동작하네요. 사용하신다면 테스트는 충분히 해보시고..
https://stackoverflow.com/questions/12364086/how-can-i-achieve-initcap-functionality-in-mysql
MariaDB [test]> select substr(replace(initcap(concat('1',replace('FIRST_REG_DT','_',' '))),' ',''),2) initcap;
+------------+
| initcap |
+------------+
| firstRegDt |
+------------+
function 안쓰고는 방법이 없는건가요?
regexp_replace 정규식 함수를 사용해서요
-- MariaDB 10.4 --
SELECT table_schema
, table_name
, column_name
, ordinal_position
, GROUP_CONCAT(
CASE WHEN SUBSTR(column_name, seq - 1, 1) = '_'
THEN UPPER(SUBSTR(column_name, seq, 1))
ELSE LOWER(SUBSTR(column_name, seq, 1))
END
ORDER BY seq SEPARATOR '') column_name_new
FROM information_schema.columns
INNER JOIN seq_1_to_40
ON seq <= LENGTH(column_name)
WHERE table_schema = 'test'
AND table_name = 'test'
AND SUBSTR(column_name, seq, 1) != '_'
GROUP BY table_schema
, table_name
, column_name
, ordinal_position
;
-- Oracle --
SELECT table_name
, column_name
, column_id
, REPLACE(SUBSTR(INITCAP('a' || column_name), 2), '_') column_name_new
FROM user_tab_columns
WHERE table_name = 'TEST'
;