oracle比varchar大的,Oracle中char,varchar,varchar2,nvarchar,nvarchar2

编码方式中国人民通过对 ASCII 编码的中文扩充改造,产生了 GB2312 编码,可以表示6000多个常用汉字。

汉字实在是太多了,包括繁体和各种字符,于是产生了 GBK 编码,它包括了 GB2312 中的编码,同时扩充了很多。

中国是个多民族国家,各个民族几乎都有自己独立的语言系统,为了表示那些字符,继续把 GBK 编码扩充为 GB18030 编码。

每个国家都像中国一样,把自己的语言编码,于是出现了各种各样的编码,如果你不安装相应的编码,就无法解释相应编码想表达的内容。

终于,有个叫 ISO 的组织看不下去了。他们一起创造了一种编码 UNICODE ,这种编码非常大,大到可以容纳世界上任何一个文字和标志。所以只要电脑上有 UNICODE 这种编码系统,无论是全球哪种文字,只需要保存文件的时候,保存成 UNICODE 编码就可以被其他电脑正常解释。

UNICODE 在网络传输中,出现了两个标准 UTF-8 和 UTF-16,分别每次传输 8个位和 16个位。于是就会有人产生疑问,UTF-8 既然能保存那么多文字、符号,为什么国内还有这么多使用 GBK 等编码的人?因为 UTF-8 等编码体积比较大,占电脑空间比较多,如果面向的使用人群绝大部分都是中国人,用 GBK 等编码也可以。

GB2312 和 utf-8 都包含ASCII码(一个字节八位)。

ascii.jpg

GB2312:汉字、全角字符以及其它扩展字符才是双字节编码

unicode:一个中文占两个字节,对于ASCII里的那些“半角”字符,unicode包持其原编码不变,只是将其长度由原来的8位扩展为16位,而其他文化和语言的字符则全部重新统一编码。由于”半角”英文符号只需要用到低8位,所以其高8位永远是0,因此这种大气的方案在保存英文文本时会多浪费一倍的空间

UTF-16:通常汉字占两个字节,CJKV扩展B区、扩展C区、扩展D区中的汉字占四个字节(一般字符的Unicode范围是U+0000至U+FFFF,而这些扩展部分的范围大于U+20000,因而要用两个UTF-16)

utf-8:变长编码,通常汉字占三个字节,扩展B区以后的汉字占四个字节

相同点

1、 varchar2和 varchar 其实际存储长度可变varchar(20) ,当存入的是‘aaa’的时候,数据库中的实际空间为3,而非20.

2、nvarchar/nvarchar2用于存储可变长度的字符串size其值表示字符的个数,而不是字节数,这两种类型更适合存储中文

`NVARCHAR2(size):`

Variable-length Unicode character string

having maximum length size characters. You must specify

size for NVARCHAR2. The number of bytes can be up to two

times size for AL16UTF16 encoding and three times size for

UTF8 encoding. Maximum size is determined by the national

character set definition, with an upper limit of:

* 32767 bytes if MAX_STRING_SIZE = EXTENDED

* 4000 bytes if MAX_STRING_SIZE = STANDARDNVARCHAR2(20):如果编码类型为AL16UTF16,则最多可以存20*2个字节;如果编码类型为UTF8,则最多可以存储20*3个字节

存入‘aaa’,编码为AL16UTF16,则占用

不同点

1.nvarchar英文数字等按照一个计算

2.nvarchar2中所有字符均按照2个字节

3.nvarchar2虽然更占空间,但是它有更好的兼容性,所有推荐使用;

4.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集

5.VARCHAR2把空串等同于null处理,而varchar仍按照空串处理;

6.Char 是固定的,大小不会动态改变因此 char占用空间大,但是效率高;而varchar占用内存小,效率却低

【注意】

VARCHAR2是Oracle提供的特定数据类型,Oracle可以保证VARCHAR2在任何版本中该数据类型都可以向上和向下兼容。

VARCHAR在Oracle中不建议使用。

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值