nvarchar2

Oracle char varchar2 nvarchar2

旧巷老猫 提交于 2019-11-28 14:40:53
数据库字符集 首先需要强调下 Oracle 的数据库字符集属性会影响字符类型的容量, 可以通过执行该 sql select userenv('language') from dual; 查看 Oracle 的数据库字符集. 如果字符集编码是 16-bit 的,那么每个字符占16位,也就是2字节. 如果字符集编码是 32-bit 的,那么每个字符占32位,也就是4字节. Tips:数据字符集不同的情况下进行数据迁移,可能会出现长度异常的问题. char 示例: char(5) 表示该字段的数据类型为 char ,可存在5个字节长度的字符,不足则自动空格填充,也就是你如果存入一个字符"A",自动会在后面加上4个空格,读取出来会变成"A空格空格空格空格" varchar2 最大长度为4000. 示例: varchar2(50) 标识该字段的数据类型为 varchar ,可存放单个字节长度的字符50个,比如英文/数字,但一个汉字占2个字节长度( 受数据库字符集影响 ). nvarchar2 最大长度为2000. 示例: nvarchar(50) 表示该字段的数据类型为 nvarchar ,可存放单个字节长度的字符50个,不论字符是汉字/英文/数字都只占1个字节长度( 受数据库字符集影响 ). 来源: oschina 链接: https://my.oschina.net/u/2912152

varchar nvarchar char nchar varchar2 nvarchar2

主宰稳场 提交于 2019-11-28 14:40:29
1、char 定长的存储ASCII码字节数据,过去使用这种类型保存数据,但是由于定长势必浪费存储空间;但是效率高 2、varchar 不定长的存储ASCII码字节数据,即使初始化空间为5,如果只存储长度为3的字节,你们也只是占用3个字节的空间;相比char,varchar可以大量节约空间,但是在效率上稍低,原因是长度的判断导致要移位操作,不过这种影响小的可以不用计算,所以在开发中尽量使用varchar; 3、nvarchar 不定长的存储字符数据,这个与varchar的最大区别就是,varchar存储的是字节,而nvarchar存储的字符,也就是说,如果你初始化的空间是5的话,那么意思是申请了5个字符的空间,对于Unicode编码我们知道不同字符所占的字节是不一样的,但是英文只是一个字节就能满足,中文就不一样了,所以,如果你采用nvarchar作为存储英文的话,那就是大量浪费空间。 4、varchar2 varchar2是oracle可变长的数据类型,在SqlServer中称为varchar,他的特点就是可变长,比如定义表的时候采用 FNAME varchar2(20) 意思是FNAME字段最大采用20个 字节 存储,每个字节就是一个8位,也就是 0-127 的ASCII码,实际上这个FNAME的字符串长度就是最大为 20 ,但是不一定为 20;他是不能存储非ASCII码字符的;