Q. 제가 A라는 테이블을 하나 만들었습니다. name이란 칼럼이 있는데요,
이 칼럼엔 '홍길동', '이순신'과 같은 세 글자 이름이 들어가도록 하려고 합니다.
그래서 name 칼럼의 데이터 타입 길이는 6 Byte로 지정했습니다. 그런데 insert가 되지 않습니다.
그래서 데이터 타입 길이를 9 Byte로 해 주었더니 인제야 insert가 됩니다. 아무래도 한글 한 글자를 3 Byte로 인식하는 것 같은데, 왜 이런 걸까요?
A. 간단합니다. 오라클 설치할 때 문자 집합을 어떻게 설정했느냐에 따라 한글을 인식하는 Byte 길이가 달라집니다. KO16KSC5601(한글 완성형), KO16MSWIN949는 한글 한 글자를 2 Byte로 인식합니다. 하지만, UTF8/AL32UTF8의 경우 한글 한 글자의 길이를 3 Byte로 인식합니다. UTF8/AL32UTF8의 장점은 한글 정렬(order by)이 가능하지만, 3 Byte 길이를 소모합니다.
SQL PLUS 접속하신 후,
명령어를 실행시켜 주십시오. 현재 사용 중인 문자 집합을 확인할 수 있습니다.
이 칼럼엔 '홍길동', '이순신'과 같은 세 글자 이름이 들어가도록 하려고 합니다.
그래서 name 칼럼의 데이터 타입 길이는 6 Byte로 지정했습니다. 그런데 insert가 되지 않습니다.
그래서 데이터 타입 길이를 9 Byte로 해 주었더니 인제야 insert가 됩니다. 아무래도 한글 한 글자를 3 Byte로 인식하는 것 같은데, 왜 이런 걸까요?
A. 간단합니다. 오라클 설치할 때 문자 집합을 어떻게 설정했느냐에 따라 한글을 인식하는 Byte 길이가 달라집니다. KO16KSC5601(한글 완성형), KO16MSWIN949는 한글 한 글자를 2 Byte로 인식합니다. 하지만, UTF8/AL32UTF8의 경우 한글 한 글자의 길이를 3 Byte로 인식합니다. UTF8/AL32UTF8의 장점은 한글 정렬(order by)이 가능하지만, 3 Byte 길이를 소모합니다.
SQL PLUS 접속하신 후,
SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER LIKE '%CHARACTERSET%';
명령어를 실행시켜 주십시오. 현재 사용 중인 문자 집합을 확인할 수 있습니다.
'Developer Diary > SQL & DB' 카테고리의 다른 글
오라클 에러 Listener refused the connection with the following error:ORA-12505 (1) | 2011.10.02 |
---|---|
HTML 태그를 파싱해서 SELECT (0) | 2011.06.29 |
미쳐부러.. (0) | 2010.08.08 |
Oracle 10g 에서 tnsnames.ora 파일 위치 (0) | 2010.07.04 |
ASP에서 ORACLE 연동 (0) | 2010.07.04 |