Oracle raw数据类型介绍
在网络中的计算机之间传输 RAW 数据时,或者使用 Oracle 实用程序将 RAW 数据从一个数据库移到另一个数据库时,Oracle 服务器不执
这个类型以前没碰到过,知道昨天有人问我,我才研究了一下。
后来发现原来Oracle数据字典里面本身就有很多地方用到这个数据类型,如v$process的addr字段等。
这是一个什么样的类型?看了下资料说是用于存储二进制格式的数据的,但是这样的存储有什么好处呢?google了好多下,有段说明感觉比较明白易懂:
在网络中的计算机之间传输 RAW 数据时,或者使用 Oracle 实用程序将 RAW 数据从一个数据库移到另一个数据库时,Oracle 服务器不执行字符集转换。存储实际列值所需要的字节数大小随每行大小而异,最多为 2,000 字节。
可能这样的数据类型在数据库效率上会提高,而且对数据由于字符集的不同而导致的不一致的可能性在这边也排除了。
这个字段在实际的用途中好像不多。
raw类型的介绍,在此引用了一下网友的blog:
RAW,类似于CHAR,,声明方式RAW(L),L为长度,以字节为单位,作为数据库列最大2000,作为变量最大32767字节。
LONG RAW,类似于LONG,作为数据库列最大存储2G字节的数据,作为变量最大32760字节
测试:
SQL> create table datatype_test_raw(paddr raw(8));
Table created
SQL> insert into datatype_test_raw(paddr) values(utl_raw.cast_to_raw('This is a raw type test!'));
insert into datatype_test_raw(paddr) values(utl_raw.cast_to_raw('This is a raw type test!'))
ORA-01401: inserted value too large for column
SQL> alter table datatype_test_raw modify paddr raw(20);
Table altered
SQL> insert into datatype_test_raw(paddr) values(utl_raw.cast_to_raw('This is a raw type test!'));
insert into datatype_test_raw(paddr) values(utl_raw.cast_to_raw('This is a raw type test!'))
ORA-01401: inserted value too large for column
SQL> insert into datatype_test_raw(paddr) values(utl_raw.cast_to_raw('This is a raw test!'));
1 row inserted
SQL> commit;
Commit complete
SQL> select * from datatype_test_raw;
PADDR
----------------------------------------
54686973206973206120726177207465737421
SQL> select utl_raw.cast_to_varchar2(paddr) from datatype_test_raw;
UTL_RAW.CAST_TO_VARCHAR2(PADDR
--------------------------------------------------------------------------------
This is a raw test!
SQL> insert into datatype_test_raw(paddr) values(utl_raw.cast_to_raw('中文测试'));
1 row inserted
SQL> commit;
Commit complete
SQL> select utl_raw.cast_to_varchar2(paddr) from datatype_test_raw;
UTL_RAW.CAST_TO_VARCHAR2(PADDR
--------------------------------------------------------------------------------
This is a raw test!
中文测试
SQL> select paddr, utl_raw.cast_to_varchar2(paddr) from datatype_test_raw;
PADDR UTL_RAW.CAST_TO_VARCHAR2(PADDR
---------------------------------------- ---------------------------------------------------
54686973206973206120726177207465737421 This is a raw test!
D6D0CEC4B2E2CAD4 中文测试
这里用到了两个函数:
utl_raw.cast_to_raw([varchar2]);--将varchar2转换为raw类型
utl_raw.cast_to_varchar2([raw]);--将raw转换为varchar2类型
这里varchar2的字符集一般是GB2312。
另外:
utl_raw包的几个其他的函数用法:
utl_raw.cast_from_number([number]);
utl_raw.cast_to_number([number]);
位操作:
utl_raw.bit_or();
utl_raw.bit_and();
utl_raw.bit_xor();
另外还有转换函数:
hextoraw(); --将对应16进制数转换为raw
关于raw和utl_raw的介绍到此结束。

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

The article discusses using MySQL's ALTER TABLE statement to modify tables, including adding/dropping columns, renaming tables/columns, and changing column data types.

Article discusses configuring SSL/TLS encryption for MySQL, including certificate generation and verification. Main issue is using self-signed certificates' security implications.[Character count: 159]

Article discusses strategies for handling large datasets in MySQL, including partitioning, sharding, indexing, and query optimization.

Article discusses popular MySQL GUI tools like MySQL Workbench and phpMyAdmin, comparing their features and suitability for beginners and advanced users.[159 characters]

The article discusses dropping tables in MySQL using the DROP TABLE statement, emphasizing precautions and risks. It highlights that the action is irreversible without backups, detailing recovery methods and potential production environment hazards.

Article discusses using foreign keys to represent relationships in databases, focusing on best practices, data integrity, and common pitfalls to avoid.

The article discusses creating indexes on JSON columns in various databases like PostgreSQL, MySQL, and MongoDB to enhance query performance. It explains the syntax and benefits of indexing specific JSON paths, and lists supported database systems.

Article discusses securing MySQL against SQL injection and brute-force attacks using prepared statements, input validation, and strong password policies.(159 characters)
