codecamp

OceanBase RAW数据类型

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

  • 示例 3: OceanBase 数据库将 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 数据库不执行字符转换。

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 类型转换为 VARCHAR2 类型。

UTL_RAW.BIT_OR()、UTL_RAW.BIT_AND()、UTL_RAW.BIT_XOR()

位操作。

OceanBase 日期时间 DATE 和间隔 INTERVAL 的计算
OceanBase 大对象数据类型概述
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

OceanBase 控制台指南

OceanBase ODC 使用指南

OceanBase Web 版 ODC

OceanBase 客户端版 ODC

OceanBase Connector/J 开发者指南

OceanBase 什么是OceanBase Connector/J

OceanBase SQL 参考(MySQL 模式)

OceanBase SQL 参考(Oracle 模式)

OceanBase 基本元素

OceanBase 数据库对象

OceanBase 函数

OceanBase 单行函数

OceanBase 返回数字的字符串函数

OceanBase 通用比较函数

OceanBase 编码解码函数

OceanBase SQL 调优指南

OceanBase 相关协议

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }