第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > oracle nvarchar2和varchar2 NCLOB BLOB CLOB区别

oracle nvarchar2和varchar2 NCLOB BLOB CLOB区别

时间:2023-03-17 14:59:25

相关推荐

oracle nvarchar2和varchar2 NCLOB BLOB CLOB区别

位(bit)、字节(byte)、字符、编码之间的关系

1、位:是数据存储的最小单位,每个二进制数字0或者1就是一个位;

2、字节:一个字节占8位,即1byte(字节)=8bit(位);

3、字符:一般GBK编码下,汉字占2个字节;在utf-8编码下,汉字占3个字节;

4、编码:规定每个“字符”分别用一个字节还是多个字节存储,用哪些字节来存储,这个规定就叫编码,即每个字符用二进制在计算中表示存储;

char、varchar、 varchar2、nvarchar2

(mysql中没有varchar2和nvarchar2)

区别

1、char是固定长度,长度不够的情况下,用空格代替;

2、varchar、varchar2、nvarchar2是可变长度,按照实际的长度存储,定义长度为10,不满10个字节的话,以实际长度为准;

3、char、varchar、varchar2默认存储单位是字节(也可以用字符作为存储单位),nvarchar2默认存储单位只能是字符;

4、 VARCHAR2比CHAR节省空间,在效率上比CHAR会稍微差一些;

nvarchar2和varchar2

1、nvarchar2最大值为2000,单位是字符,并且不受字符集编码影响,最大能存2000个字符(无论汉字/字母),每个字符的长度都为2个字节;

2、varchar2最大值为4000,类型可以是char也可以是byte,默认为字节byte;当gbk编码时,一个汉字占2个字节,所以varchar能存2000个汉字;uft-8编码时,只能存1333个汉字。

NCLOB、BLOB、CLOB

共同点

1、以上三者都是oracle数据库中的大对象数据类型,oracle提供专门的包对其进行操作;

2、三者都属于大型对象(LOB),用来保存较大的图形文件/文本文件/音频/视频等,最大长度为4GB;

不同点

1、CLOB(内部字符大对象)使用Char来保存数据;(如:保存XML文档)

2、BLOB(内部二进制大对象)使用二进制来保存数据;(如:保存位图)

3、BLOB和CLOB都是大字段类型,BLOB是按二进制来存储的,而CLOB是可以直接存储文字的。其实两个是可以互换的的,或者可以直接用LOB字段代替这两个。但是为了更好的管理ORACLE数据库,通常像图片、文件、音乐等信息就用BLOB字段来存储,先将文件转为二进制再存储进去。而像文章或者是较长的文字,就用CLOB存储,这样对以后的查询更新存储等操作都提供很大的方便。

4、 NCLOB(内部定长多字节字符大对象)它存储UNICODE类型的数据,支持固定宽度和可变宽度的字符集,NCLOB对象可以存储最多(4 gigabytes-1) * (database block size)大小的文本数据。

Java中读到的NCLOB对象转化成String对象工具类

public String clob2Str(NClob nclob) throws Exception {String content = "";try {Reader is = nclob.getCharacterStream();BufferedReader buff = new BufferedReader(is);// 得到流String line = buff.readLine();StringBuffer sb = new StringBuffer();while (line != null) {// 执行循环将字符串全部取出付值给StringBuffer由StringBuffer转成STRINGsb.append(line);line = buff.readLine();}content = sb.toString();} catch (Exception e) {logger.error("java.sql.NClob类型转java.lang.String类型出错..." + e.getCause());e.printStackTrace();}return content;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。