Oracle中的LONG类型有两种:
LONG文本类型,能存储2GB的文本。与VARCHAR2或CHAR类型一样,存储在LONG类型中的文本要进行字符集转换。
LONG RAW类型,能存储2GB的原始二进制数据(不用进行字符集转换的数据)。
在此并不解释如何使用LONG类型,而是会解释为什么你不希望在应用中使用LONG(或LONG RAW)类型。首先要注意的是,Oracle文档在如何处理LONG类型方面描述得很明确。Oracle SQL Reference手册指出:
不要创建带LONG列的表,而应该使用LOB列(CLOB、NCLOB、BLOB)。支持LONG列只是为了保证向后兼容性。
没有内置的函数处理,得自己写处理函数,可以参考:网页链接
1varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节;
2VARCHAR2把空串等同于null处理,而varchar仍按照空串处理;
3VARCHAR2字符要用几个字节存储,要看数据库使用的字符集,
大部分情况下建议使用varchar2类型,可以保证更好的兼容性。
如果Oracle 的字符集是Utf-8, varchar2(4000)最多可以存1333个汉字,而varchar2(4000 char)其实和varchar2(1333 char)一样,也是只能存1333个汉字;
如果Oracle的字符集是GBK,一个汉字是2个字节的话,varchar2(4000)最多可以存2000个汉字,而varchar2(4000 char)其实和varchar2(2000 char)一样,也是只能存2000个汉字;
varchar2是oracle提供的独特的数据类型
oracle保证在任何版本中该数据类型向上和向下兼容
但不保证varchar,这是因为varchar是标准sql提供的数据类型
有可能随着sql标准的变化而改变
不过ocacle以后的版本就不支持varchar类型,如果想新版本的数据库兼容就不要用varchar,如果想和其它数据库兼容就不要用varchar2
另外区别(重点):
varchar2存放空字符串'',和null,都统一用null来存放到数据库中,直接查询''是查询不到东西的,这是跟其他数据库的主要区别。
海枫科技
例如:
v_char
varchar2(10);
c_char
char(10);
varchar2:对于定义长度的变量或表中的字段的长度可变,就是定义varchar2(10),你只有一个字符时,变量或表中的字段里面就只保存了1个字符,不补空格,v_char='A';length(v_char)=1。
c_char/varchar:是定长数据:赋值c_char='A',实际上是:c_char='A
',length(c_char)=10。
如果作比较的话如果使用c_char/varchar,你会比较痛苦的
if
c_char=v_char
then
这样的语句出来的肯定是:false否(else)里面的,要对c_char实行rtrim才是:真:if
rtrim(c_char)=v_char
then
这才返回:ture
以上就是关于数据库Oracle 在查询的时候将LONG类型转换成VARCHAR2全部的内容,包括:数据库Oracle 在查询的时候将LONG类型转换成VARCHAR2、oracle中varchar2 为什么要加上2、oracle varchar2最多可以存多少字符等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)