1.char和varchar2
char:定长 长度不够会自动补齐空格 浪费空间
varchar2:多余的长度不会补空格 节省磁盘空间
DECLARE
v_len1 CHAR(10):='ABC';
v_len2 VARCHAR2(10):='ABC';
BEGIN
dbms_output.put_line('v_len1的长度:'||LENGTH(v_len1));
dbms_output.put_line('v_len2的长度:'||LENGTH(v_len2));
END;
————————output———————————
v_len1的长度:10
v_len2的长度:3
2.NCHAR和NVARCHAR2
NCHAR和NVARCHAR2保存数据使用unicode编码,统一了英文和汉字的长度。进行字符处理时方便,会浪费一定的空间。
DECLARE
v_len1 NVARCHAR2(10):='ABCD';
v_len2 NVARCHAR2(10):='我爱中国';
BEGIN
dbms_output.put_line('v_len1的长度:'||LENGTH(v_len1));
dbms_output.put_line('v_len2的长度:'||LENGTH(v_len2));
END;
———————output——————————–
v_len1的长度:4
v_len2的长度:4
DECLARE
v_len1 VARCHAR2(10):='我爱中国天安门';
v_len2 NVARCHAR2(10):='我爱中国天安门';
BEGIN
dbms_output.put_line('v_len1的长度:'||LENGTH(v_len1));
dbms_output.put_line('v_len2的长度:'||LENGTH(v_len2));
END;
同样的字符串,VARCHAR2类型的报字符串缓冲区太小的错误。一般建议存储汉字时使用NVARCHAR2。