数据库Oracle 在查询的时候将LONG类型转换成VARCHAR2

数据库Oracle 在查询的时候将LONG类型转换成VARCHAR2,第1张

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最多可以存多少字符等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9310289.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存