`

关于hextoraw()与utl_raw.cast_to_raw及rawtohex()

 
阅读更多
来源:http://flysky0814.itpub.net/post/35477/413779
SQL> create table test_raw (raw_col raw(10));

表已创建。

SQL> insert into test_raw values (hextoraw('ff'));

已创建 1 行。

SQL> insert into test_raw values (hextoraw('0'));

已创建 1 行。

SQL> insert into test_raw values (hextoraw('23fc'));

已创建 1 行。

SQL> insert into test_raw values (hextoraw('fffffffffff'));

已创建 1 行。

SQL> insert into test_raw values (hextoraw('ffffffffffffffffffff'));

已创建 1 行。

SQL> insert into test_raw values (utl_raw.cast_to_raw('051'));

已创建 1 行。

SQL> select raw_col, dump(raw_col, 16) dump_raw from test_raw;

RAW_COL DUMP_RAW
-------------------- -----------------------------------------------
FF Typ=23 Len=1: ff
00 Typ=23 Len=1: 0
23FC Typ=23 Len=2: 23,fc
0FFFFFFFFFFF Typ=23 Len=6: f,ff,ff,ff,ff,ff
FFFFFFFFFFFFFFFFFFFF Typ=23 Len=10: ff,ff,ff,ff,ff,ff,ff,ff,ff,ff
303531 Typ=23 Len=3: 30,35,31

已选择6行。

RAW类型的存储很简单,对比字段的查询结果和DUMP的结果就一目了然了。

需要注意的是,两种转化为RAW的函数之间的差别。当使用HEXTORAW时,会把字符串中数据当作16进制数。而使用UTL_RAW.CAST_TO_RAW时,直接把字符串中每个字符的ASCII码存放到RAW类型的字段中。

---------------------------------------------------

SQL> select rawtohex(sysdate) from dual;

07D70B100A003100

SQL> select dump(sysdate,16) from dual;

Typ=13 Len=8: 7,d7,b,10,a,1,2,0

SQL> select rawtohex(12) from dual;

C10D

SQL> select dump(12,16) from dual;

Typ=2 Len=2: c1,d

SQL> select rawtohex('12') from dual;

3132

SQL> select dump('12',16) from dual;

Typ=96 Len=2: 31,32

可以看出rawtohex()函数参数可为date,number,char等类型,并自动转化为相应16进制数据.

而hextoraw()的参数只能为16进制.虽然最终结果还是用16进制数据表现出来,但在ORACLE内部是存储raw类型,具体内部怎么实现,小弟才舒学浅,就很难判断了!
分享到:
评论

相关推荐

    dbms_obfuscation_toolkit加密解密数据

    vEncryptedRaw := UTL_RAW.CAST_TO_RAW(vEncrypted); RETURN vEncryptedRaw; END; END; / ``` 通过以上步骤,我们成功地定义了一个可以用于加密和解密的PL/SQL包。此包提供了加密和解密的功能,使得开发者能够在...

    oracle新手入门指导之四——ORACLE数据类型 .txt

    - 插入数据时可以使用`HEXTORAW`或`UTL_RAW.CAST_TO_RAW`函数。 - 示例:`INSERT INTO raw_test VALUES (1, HEXTORAW('ff'));` - 使用`HEXTORAW`时,输入的字符串必须为16进制格式;使用`UTL_RAW.CAST_TO_RAW`时...

    Oracle储存过程包加解密实现

    decrypted_data := UTL_I18N.RAW_TO_CHAR( DBMS_CRYPTO.DECRYPT_AES256( cipher => encrypted_data, key => key, pad => DBMS_CRYPTO.PAD_PKCS5 ), 'AL32UTF8' ); -- decrypted_data现在存储了原文数据 END...

    oracle批量修改汉字转拼音首字母的函数

    UTL_I18N包中的`UTL_I18N.RAW_TO_CHAR`函数可以将一个字节串转换为字符,配合其他函数可以用来获取汉字的ASCII码,从而转换为拼音。但Oracle默认不支持直接获取拼音首字母,因此通常需要自定义函数来处理。 下面是...

    获取top前10个Oracle的进程(支持多实例)

    B、提供telnet扩展命令,直接查看性能与语句 C、支持远程进行的直接Kill功能 D、支持SQL直接执行相关请求,并返回结果 E、提供REST外部请求服务功能 [root@fj43 tmp]# ./RunApp.sh /var/tmp/connect.json ...

    oracle chm帮助文件下载

    6. **十进制与十六进制转换**:使用`TO_NUMBER()`和`TO_CHAR()`函数,配合`HEXTORAW()`和`RAWTOHEX()`函数进行不同进制间的转换。 7. **SYS_CONTEXT的使用**:`SYS_CONTEXT`函数用于获取会话级别的上下文信息,如...

    富士通内部培训ORACLE资料

    6. **十进制与十六进制转换**:Oracle提供了`TO_NUMBER`和`TO_CHAR`函数进行数值格式的转换,而`HEXTORAW`和`RAWTOHEX`用于十六进制字符串与二进制数据间的转换。 7. **SYS_CONTEXT的使用**:`SYS_CONTEXT`函数用于...

    Oracle关键字用法整合

    **功能说明**:`HEXTORAW`用于将十六进制字符串转换为RAW数据类型,而`RAWTOHEX`则相反,用于将RAW数据类型转换为十六进制字符串。 **HEXTORAW 示例**: ```sql SELECT hextoraw('abcdef') FROM dual; ``` 此查询将...

    ORACLE数据库中主要字段类型的读写例子(包括:Long、Raw、Blob) (2).docx

    INSERT INTO table_name (raw_column) VALUES (HEXTORAW('001122334455')); ``` 4. BLOB:BLOB是Binary Large Object的缩写,用于存储大量二进制数据,如图片、视频或文档。在.NET环境中,使用OracleParameter添加...

    Oracle函数大全.pdf

    - **hextoraw/rawtohex**: 十六进制与原始值之间的转换。 - **to_char/to_date/to_number**: 转换为字符、日期、数字。 - **to_multi_byte/to_single_byte**: 多字节与单字节之间的转换。 - **nls_charset_id/nls_...

    oracle系统内置函数大全

    3. HEXTORAW函数:将十六进制字符串转换为 RAW 类型。 4. RAWTOHEX函数:将 RAW 类型转换为十六进制字符串。 5. ROWIDTOCHAR函数:将 ROWID 转换为字符类型。 6. TO_CHAR函数:将数字、日期类型的数据转换为字符类型...

    Oracle函数大全

    - 示例:`RAWTOHEX(HEXTORAW('48656c6c6f'))` 返回 `'48656c6c6f'` 4. **ROWIDTOCHAR(s)**:将ROWID类型的`s`转换为CHAR数据类型。 - 示例:`ROWIDTOCHAR(ROWID 'AAAABAAAC')` 返回 `'AAAABAAAC'` 5. **TO_CHAR...

    Oracle8i_9i数据库基础

    §9.7.1 与用户、角色与权限有关的数据字典 209 §9.7.2 查询数据字典信息 209 第十章 其它一些常见问题及技巧 212 §10.1 一些常见问题 212 §10.1.1 Oracle与2000年问题 212 §10.1.2 如何正确插入日期数据 213 §...

    oracle代码包括查询,子查询,,,

    根据提供的Oracle代码片段,我们可以总结出一系列与Oracle数据库操作相关的知识点。这些知识点涵盖了日期处理、时间转换、数据类型转换等方面的重要功能。下面是针对这些代码片段的详细解释: ### 1. 使用`LAST_DAY...

    MYSQL,SQLSERVER,ORACLE常用的函数

    SELECT RAW_TO_HEX(X'ff') FROM dual; ``` 输出结果为“ff”。 #### 45. ROWID_TO_CHAR 将ROWID类型转换为字符类型。例如: ```sql SELECT ROWID, ROWIDTOCHAR(ROWID) FROM scott.emp; ``` 输出结果为ROWID及其字符...

    oracle plsql函数大全

    43. `RAWTOHEX`: 将二进制数据转换为十六进制字符串。 44. `ROWIDTOCHAR`: 将ROWID类型转换为字符类型。 45. `TO_CHAR(date, 'format')`: 根据format格式化日期。 46. `TO_DATE(string, 'format')`: 将字符串转换...

Global site tag (gtag.js) - Google Analytics