select * from sys.props$ where name IN
('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET', 'NLS_LANGUAGE');
NAME | VALUE$ | COMMENT$ |
NLS_NCHAR_CHARACTERSET | AL16UTF16 | NCHAR Character set |
NLS_LANGUAGE | AMERICAN | Language |
NLS_CHARACTERSET | KO16KSC5601 | Character set |
UTF8: 공통 size*3byte
AL16UTF16: 공통 size*2byte
KO16KSC5601: 한글
size*2byte, 영문 size*1byte
VARCHAR2 vs NVARCHAR2 : VARCHAR2는 LENGTH 계산시 byte 수로 계산, NVARCHAR2는 캐릭터셋에 맞게 논리적인 글자수로 계산 (개별 캐릭터셋 지정 가능)
LENGTH, LENGTHB 에 따른 차이가 나는 이유는 캐릭터셋 때문
SELECT NC, LENGTH(NC) NC_LEN, LENGTHB(NC) NC_BLEN,
LENGTHB(C)
C_LEN, LENGTHB(C) C_BLEN,
lengthb('각'),lengthb('A'),
lengthb(TO_NCHAR('각')),lengthb(TO_NCHAR('A'))
FROM CHAR_TEST
WHERE
LENGTHB(C) = 17;
NC | NC_LEN | NC_BLEN | C_LEN | C_BLEN | LENGTHB('각') | LENGTHB('A') | LENGTHB(TO_NCHAR('각')) | LENGTHB(TO_NCHAR('A')) |
안녕하세요.HI中國 | 10 | 20 | 17 | 17 | 2 | 1 | 2 | 2 |