ORACLE 格式VARCHAR2(n CHAR) 与VARCHAR2(n)的区别
2013-11-18 15:40
477 查看
数据从SOURCE表导到TARGET表因为超长进不去。SOURCE这边格式是VARCHAR2(255 CHAR), TARGET那边格式是VARCHAR2(256),这两个格式的区别在于:
数据库存储字符数字的字段使用BYTE存储,对单字节字符集这种方法很适用,有几个字符就有几个BYTE。但如果要插入多字节字符集的国际字符,BYTE和字符数不相等,BYTE数就会超长,导致数据进不去。于是ORACLE 9i设置了三种格式来解决问题:
1. VARCHAR2(n)
2. VARCHAR2(n BYTE)
3. VARCHAR2(n CHAR)
选项1 使用NLS_LENGTH_SEMANTICS参数中设定的默认长度,默认值为BYTE
选项2 只允许最大n BYTE长度的字符存储,和字符数无关
选项3 允许最大n 个字符的存储,与BYTE无关
无论何种格式,INSTR, LENGTH, SUBSTR函数仍以字符数来计算。用BYTE计算的话,请使用INSTRB, LENGTHB, SUBSTRB函数。
数据库存储字符数字的字段使用BYTE存储,对单字节字符集这种方法很适用,有几个字符就有几个BYTE。但如果要插入多字节字符集的国际字符,BYTE和字符数不相等,BYTE数就会超长,导致数据进不去。于是ORACLE 9i设置了三种格式来解决问题:
1. VARCHAR2(n)
2. VARCHAR2(n BYTE)
3. VARCHAR2(n CHAR)
选项1 使用NLS_LENGTH_SEMANTICS参数中设定的默认长度,默认值为BYTE
选项2 只允许最大n BYTE长度的字符存储,和字符数无关
选项3 允许最大n 个字符的存储,与BYTE无关
无论何种格式,INSTR, LENGTH, SUBSTR函数仍以字符数来计算。用BYTE计算的话,请使用INSTRB, LENGTHB, SUBSTRB函数。
相关文章推荐
- VARCHAR2(N CHAR)与VARCHAR2(N)的区别[Oracle基础]
- 浅谈Oracle 中 varchar2(N) 与 varchar2(N char) 的区别
- ORACLE VARCHAR2(n CHAR)格式
- Oracle中varchar2(n char) 和varchar2(n) 的区别
- 浅谈Oracle 中 varchar2(N) 与 varchar2(N char) 的区别
- VARCHAR2(N CHAR)与VARCHAR2(N)的区别[Oracle基础]
- 浅谈Oracle 中 varchar2(N) 与 varchar2(N char) 的区别
- Oracle CHAR,VARCHAR,VARCHAR2,nvarchar类型的区别与使用
- Oracle CHAR,VARCHAR,VARCHAR2,nvarchar类型的区别与使用
- oracle中 char,varchar,varchar2的区别
- oracle varchar2与varchar的区别
- Oracle CHAR,VARCHAR,VARCHAR2,nvarchar类型的区别与使用
- Oracle里Varchar的参数(byte和char)的区别测试
- oracle varchar 和varchar2的区别
- Oracle CHAR,VARCHAR,VARCHAR2类型的区别与使用
- VARCHAR2(%n)和VARCHAR2(%n char)区别
- oracle中的char和varchar2区别,String等的区别
- Oracle中CHAR、VARCHAR的区别
- Oracle CHAR,VARCHAR,VARCHAR2,nvarchar类型的区别与使用
- Oracle CHAR,VARCHAR,VARCHAR2类型的区别与使用