对Oracle Raw类型的详细解剖

WBOY
发布: 2016-06-07 15:51:07
原创
1178 人浏览过

SQL 创建表 datatype_test_raw(paddr raw(8));创建的表 SQL 插入 datatype_test_raw(paddr) 值(utl_raw.cast_to_raw('这是原始类型测试!'));插入 datatype_test_raw(paddr) 值(utl_raw.cast_to_raw('这是一个原始

SQL>创建表 datatype_test_raw(paddr raw(8));

表已创建

SQL>插入 datatype_test_raw(paddr) 值(utl_raw.cast_to_raw('这是原始类型测试!'));

插入 datatype_test_raw(paddr) 值(utl_raw.cast_to_raw('这是原始类型测试!'))

ORA-01401: 插入的值对于列
来说太大
SQL>更改表 datatype_test_raw 修改 paddr raw(20);

表格已更改

SQL>插入 datatype_test_raw(paddr) 值(utl_raw.cast_to_raw('这是原始类型测试!'));

插入 datatype_test_raw(paddr) 值(utl_raw.cast_to_raw('这是原始类型测试!'))

ORA-01401: 插入的值对于列
来说太大
SQL>插入 datatype_test_raw(paddr) 值(utl_raw.cast_to_raw('这是原始测试!'));

已插入 1 行

SQL>提交;

提交完成

SQL>从 datatype_test_raw 选择 *;

PADDR
----------------------------------------------------
54686973206973206120726177207465737421

SQL>从 datatype_test_raw 选择 utl_raw.cast_to_varchar2(paddr);

UTL_RAW.CAST_TO_VARCHAR2(PADDR
-------------------------------------------------- ------------------------------------------
这是原始测试!

SQL> insert into datatype_test_raw(paddr) values(utl_raw.cast_to_raw('中文测试'));

已插入 1 行

SQL>提交;

提交完成

SQL>从 datatype_test_raw 选择 utl_raw.cast_to_varchar2(paddr);

UTL_RAW.CAST_TO_VARCHAR2(PADDR
-------------------------------------------------- ------------------------------------------
这是原始测试!
中文测试

SQL> select paddr, utl_raw.cast_to_varchar2(paddr) from datatype_test_raw;

PADDR UTL_RAW.CAST_TO_VARCHAR2(PADDR
---------------------------------------------------- ---------- -------------------------------------------------- --------------------
54686973206973206120726177207465737421 这是一个原始测试!
D6D0CEC4B2E2CAD4 中文测试

这里用到了两个函数:
utl_raw.cast_to_raw([varchar2]);--将varchar2转换为原始类型
utl_raw.cast_to_varchar2([raw]);--将raw转换为varchar2类型
这里varchar2的字符集一般是GB2312。

另外:
utl_raw包的其他几个函数用法:
utl_raw.cast_from_number([数字]);
utl_raw.cast_to_number([数字]);
位操作:
utl_raw.bit_or();
utl_raw.bit_and();
utl_raw.bit_xor();

另外还有转换函数:
hextoraw(); --将答16圆圈数转换为raw

当使用HEXTORAW时,将字符串中数据搁置16个数。而使用UTL_RAW.CAST_TO_RAW时,直接把字符串中每个字符的ASCII码存放到RAW类型的字段中

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!