안녕하세요.
오라클 테이블 정보를 조회하다 궁금한게 생겨서 글 올립니다.
모든 테이블의 컬럼을 확인해보면 varchar2(255)로 길이가 설정되어 있는데,
SELECT b.table_name, b.column_name, b.data_type, b.data_length, b.data_precision, b.data_scale FROM user_tables a, user_tab_columns b WHERE a.table_name = b.table_name ORDER BY a.table_name, b.column_name;
위와 같은 쿼리문으로 테이블을 조회하니 varchar의 길이가 255와 510로 테이블마다 제각각 나오고 있습니다.
구글링을 하다보니 테이블마다 character set이 다르게 설정될 때도 있다고 해서
SELECT * FROM nls_database_parameters WHERE PARAMETER LIKE '%CHARACTERSET%';
로 character set을 확인해보니 KO16MSWIN949과 AL16UTF16 두가지로 설정되어 있는것을 확인했습니다.
KO16MSWIN949는 한글이 2byte, AL16UTF16는 한글이 3byte여서 어떤건 data_length 가 255로 나오고 어떤건 510으로 나온걸까요 ?
1. 혹시 각 테이블마다 설정된 character set은 어떻게 확인할 수 있나요 ?
2. varchar의 길이가 255와 510처럼 테이블마다 제각각으로 나오고 있다면 모든 테이블의 charcater set을 동일하게 변경해주면 바뀌는 문제일까요 ?
답변 부탁드립니다.
감사합니다.
안녕하세요.
그럼 NLS_CHARACTERSET에 설정된 KO16MSWIN949이 지금 사용중인 데이터베이스의 캐릭터 셋이군요 !
제가 궁금한 점은 분명 테이블에 들어가서 컬럼을 확인했을 때는 VARCHAR2(255)로 되어있는데
SELECT b.table_name, b.column_name, b.data_type, b.data_length, b.data_precision, b.data_scale FROM user_tables a, user_tab_columns b WHERE a.table_name = b.table_name ORDER BY a.table_name, b.column_name;
이 쿼리로 조회하게 되면 같은 컬럼이어도 data_length가 510로 나오는 것입니다.
혹시 왜 이렇게 나오는지 알 수 있을까요?