RAW
类似于 VARCHAR2
,声明方式是 RAW(length)
,length
为长度,以字节为单位,作为数据库列最大存储 2000 个字节,作为变量最大存储 2000 字节。
- 示例 1: 在 test_raw 表中声明
RAW
型数据,并向表中插入一条数据。
CREATE TABLE test_raw (c1 RAW(10));
INSERT INTO test_raw VALUES (utl_raw.cast_to_raw('1234567890'));
执行以下语句:
+-------------------------------+
+-------------------------------+
+-------------------------------+
- 示例 2: 向 raw_test 表中插入 2 条数据。
执行以下语句:
查询结果如下:
- 示例 3: OceanBase 将
RAW
数据转换为字符数据,每个字符代表RAW
数据的四个连续位的十六进制数(0~9 和 A~F 或 a~f)。
如:二进制位数 11001011,其 RAW
数据转换后为字符 CB。
OceanBase 将字符数据转换为 RAW
,它是把每个连续的输入字符解释为二进制数据的四个连续位,通过把这些位进行级联,来构建结果 RAW
值。
在数据库之间传输数据,或者在数据之间传输数据库字符集和客户端字符集时,OceanBase 会自动在不同数据库字符集之间转换 和 VARCHAR2
数据。而传输 RAW
数据时 OceanBase 不执行字符转换。
RAW 的函数
函数 | 说明 |
HEXTORAW() | 当使用 hextoraw 时,会把字符串中数据转换成 16 进制串,字符串中的每两个字符表示了结果 RAW 中的一个字节。 |
RAWTOHEX(rawvalue) | 将 RAW 类数值 rawvalue 转换为一个相应的十六进制表示的字符串。 rawvalue 中的每个字节都被转换为一个双字节的字符串。 |
UTL_RAW_CAST_TO_RAW([VARCHAR2]) | 保持数据的存储内容不变,仅改变数据类型,将 VARCHAR2 转换为 RAW 类型。 |
UTL_RAW_CAST_TO_VARCHAR2([RAW]) | 保持数据的存储内容不变,仅改变数据类型,将 RAW 类型转换为 类型。 |
UTL_RAW.BIT_OR()、UTL_RAW.BIT_AND()、UTL_RAW.BIT_XOR() | 位操作。 |