暂无图片
Oracle raw类型
我来答
分享
暂无图片 匿名用户
Oracle raw类型

在早数据库使用时,大量使用了raw类型,随着系统不断扩容但新的应用开发上很多sql忘记用hextoraw()函数,导致很多sql需要优化,有什么好的类型代替raw类型嘛?一劳永逸的方法?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
Lucifer三思而后行
暂无图片

可以试试 VARCHAR,其实RAW和VARCHAR是类似的,只是存储在RAW里的是二进制值,在任何时候不会做自动的字符集转换,这是RAW和VARCHAR的不同,RAW只是一种外部类型,其内部存储是VARRAW;

可以参考文章:Oracle raw类型

oracle中用于保存位串的数据类型是RAW,LONG RAW(推荐使用BLOB)。

RAW,类似于CHAR,声明方式RAW(L),L为长度,以字节为单位,作为数据库列最大2000,作为变量最大32767字节。

LONG RAW,类似于LONG,作为数据库列最大存储2G字节的数据,作为变量最大32760字节

RAW类型的好处就是:在网络中的计算机之间传输 RAW 数据时,或者使用 Oracle 实用程序将 RAW 数据从一个数据库移到另一个数据库时,Oracle 服务器不执行字符集转换。存储实际列值所需要的字节数大小随每行大小而异,最多为 2,000 字节。可能这样的数据类型在数据库效率上会提高,而且对数据由于字符集的不同而导致的不一致的可能性在这边也排除了。

常用于操作raw类型的函数:UTL_RAW.CAST_TO_RAW,hextoraw.

RAW保存的为16进制数。当使用HEXTORAW时,会把字符串中数据当作16进制数。而使用UTL_RAW.CAST_TO_RAW时,直接把字符串中每个字符的ASCII码存放到RAW类型的字段中。

暂无图片 评论
暂无图片 有用 1
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏