码迷,mamicode.com
首页 > 数据库 > 详细

Oracle之数据类型问题

时间:2019-08-07 22:39:46      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:实际应用   html   最大   占用   var   har   数据类型   字符   rac   

做项目涉及到Oracle数据库中数据类型:字符串型的问题

  我不太清楚varchar(32)到底代表着什么?

  通过搜索了解到:oracle中有三种常用的类型:varchar2(byte),varchar2(char),nvarchar2()

  varchar2(byte):默认表示方式,varchar2(100),就相当于varchar2(100 byte),表示最大字节数为100,强调空间大小。如果数据库使用GBK编码,那么一个汉字占用2个字节,如果用UTF8,一个汉字占用3个字节

  varchar2(char):表示最大字符数为100,强调个数。无论是数字、字母、汉字都是一个字符,最多写100个,当然,汉字越多,占用的空间越大,因为一个汉字2或者3个字节。

  nvarchar2():没有字节字符之分,类似于varchar2(char),只不过nvarchar2()屏蔽数据库编码,无论是何种编码,nvarchar2()中一个汉字都占用2个字节

  实际应用中,可能会有这样的写法:nvarchar2(1400char),看似一切正常,实则不然,如果全是汉字的话,1400*3字节超过了咱们说的4000字节,而多出来的数据就不被存储

  故对于GBK编码来说:安全写法为varchar2(2000char),nvarchar2(2000)

  对于UTF8编码来说:安全写法为varchar2(1333),nvarchar2(2000)

主要参考文章:http://www.luoxiao123.cn/oracle_varchar2_trap.html

Oracle之数据类型问题

标签:实际应用   html   最大   占用   var   har   数据类型   字符   rac   

原文地址:https://www.cnblogs.com/superhonors/p/11318126.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!