RAW
是一种可变长度的数据类型,在不同平台上传输时,传送的都是二进制信息,即使字符集不同也不需要转换。OceanBase 数据库中用于保存二进制数据或字节字符串。
RAW
类似于 VARCHAR2
,声明方式是 RAW(length)
,length
为长度,以字节为单位,作为数据库列最大存储 2000 个字节,作为变量最大存储 2000 字节。
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'));
执行以下语句:
SELECT utl_raw.cast_to_varchar2(c1) FROM test_raw;
查询结果如下:
+-------------------------------+
| UTL_RAW.CAST_TO_RAW(C1) |
+-------------------------------+
| 1234567890 |
+-------------------------------+
示例 2: 向 raw_test 表中插入 2 条数据。
CREATE TABLE raw_test (id number, raw_date raw(10));
INSERT INTO raw_test VALUES (1, hextoraw('ff'));
INSERT INTO raw_test VALUES (2, utl_raw.cast_to_raw('051'));
执行以下语句:
SELECT * FROM raw_test;
查询结果如下:
+------+----------+
| ID | RAW_DATE |
+------+----------+
| 1 | FF |
| 2 | 303531 |
+------+----------+
SQL 函数 HEXTORAW()
会把字符串中数据转换为 16 进制数。SQL 函数 UTL_RAW.CAST_TO_RAW([VARCHAR2])
会把字符串中每个字符的 ASCII 码存放到 RAW
类型的字段中。例如,051 转换为 303531。
RAW
数据转换为字符数据,每个字符代表 RAW
数据的四个连续位的十六进制数(0~9 和 A~F 或 a~f)。如:二进制位数 11001011,其 RAW
数据转换后为字符 CB。
OceanBase 数据库将字符数据转换为 RAW
,它是把每个连续的输入字符解释为二进制数据的四个连续位,通过把这些位进行级联,来构建结果 RAW
值。
注意
如果任一输入字符不是十六进制数(0~9 和 A~F 或 a~f),则将报告错误。如果字符数为奇数,则结果不确定。
在数据库之间传输数据,或者在数据之间传输数据库字符集和客户端字符集时,OceanBase 数据库会自动在不同数据库字符集之间转换 CHAR
和 VARCHAR2
数据。而传输 RAW
数据时 OceanBase 数据库不执行字符转换。
函数 |
说明 |
---|---|
HEXTORAW() |
当使用 |
RAWTOHEX(rawvalue) |
将 rawvalue 中的每个字节都被转换为一个双字节的字符串。 |
UTL_RAW_CAST_TO_RAW([VARCHAR2]) |
保持数据的存储内容不变,仅改变数据类型,将 |
UTL_RAW_CAST_TO_VARCHAR2([RAW]) |
保持数据的存储内容不变,仅改变数据类型,将 |
UTL_RAW.BIT_OR()、UTL_RAW.BIT_AND()、UTL_RAW.BIT_XOR() |
位操作。 |
本教程介绍在 OceanBase 开发者中心(OceanBase Developer Center,ODC)中创建数据库连接的详细步骤。背景信息ODC 作为为 Ocean...
JOIN 算子用于将两张表的数据,按照特定的条件进行联接。JOIN 的类型主要包括内联接(INNER JOIN)、外联接(OUTER JOIN)和半联...
EXCHANGE 算子用于线程间进行数据交互的算子。EXCHANGE 算子适用于在分布式场景,一般都是成对出现的,数据源端有一个 OUT 算子...
全局测试实用程序界面,用于添加 IAbilityMonitor 对象并控制功能的生命周期状态。您可以调用 addAbilityMonitor(java.lang.Str...