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类型的字段中