首批通过分布式安全可靠测评,为关键业务系统打造
位图构造函数
更新时间:2024-09-23 23:00:00
位图构造函数用于构建新的位图数据类型。OceanBase 数据库当前所支持的位图判断函数包括 rb_build_empty()、rb_build_varbinary() 和 rb_from_string()。
说明
返回可视化的十六进制查询结果需了解的注意事项请见创建高效压缩位图列。
rb_build_empty
rb_build_empty() 函数用于构建一个空的位图数据。语法如下:
rb_build_empty()
该函数无需输入参数。
示例如下:
SELECT rb_build_empty();
+------------------------------------+
| rb_build_empty() |
+------------------------------------+
| 0x0100 |
+------------------------------------+
1 row in set
SELECT rb_is_empty(rb_build_empty());
+-------------------------------+
| rb_is_empty(rb_build_empty()) |
+-------------------------------+
| 1 |
+-------------------------------+
1 row in set
rb_build_varbinary
rb_build_varbinary() 函数通过 varbinary 来构建位图数据。Varbinary 为 OceanBase 私有格式,是由 version 信息、type 信息、data 等部分组成的二进制格式。语法如下:
rb_build_varbinary(bin_str)
输入的参数为 varbinary 字符串。
示例如下:
SELECT rb_to_string(rb_build_varbinary(x'0100'));
+-------------------------------------------+
| rb_to_string(rb_build_varbinary(x'0100')) |
+-------------------------------------------+
| |
+-------------------------------------------+
1 row in set
SELECT rb_to_string(rb_build_varbinary(x'0103020100000002000000'));
+-------------------------------------------------------------+
| rb_to_string(rb_build_varbinary(x'0103020100000002000000')) |
+-------------------------------------------------------------+
| 1,2 |
+-------------------------------------------------------------+
1 row in set
rb_from_string
rb_from_string() 函数通过特定格式的字符串来构建位图数据。字符串格式为需要构建的位图数据的每一个元素,并通过逗号隔开,如 1,2,3,4。语法如下:
rb_from_string(str)
输入的字符串值支持 INT32 和 INT64 两种格式,Oceanbase 支持的合法的值范围是 [0, UINT64_MAX]。但是为了兼容 PG,也支持 [INT32_MIN,0) 范围的负整数的输入,在输出时负整数会转换为 UINT32 的值输出,比如输入 -1,输出是 4294967295。
示例如下:
SELECT rb_from_string('1,2,3');
+--------------------------------------------------+
| rb_from_string('1,2,3') |
+--------------------------------------------------+
| 0x010303010000000200000003000000 |
+--------------------------------------------------+
1 row in set
SELECT rb_to_string(rb_from_string('-1'));
+------------------------------------+
| rb_to_string(rb_from_string('-1')) |
+------------------------------------+
| 4294967295 |
+------------------------------------+
1 row in set