BINARY/VARBINARY
描述
BINARY(M)
VARBINARY(M)
自 3.0 版本起,StarRocks 支持 BINARY/VARBINARY 数据类型,用于存储二进制数据,单位为字节。
支持的最大长度与 VARCHAR 类型相同,M
的取值范围为 [1,1048576]。如果未指定 M
,默认为最大值 1048576。
BINARY 是 VARBINARY 的别名,用法与 VARBINARY 相同。
限制和注意事项
- 支持在明细表、主键表、更新表中创建 VARBINARY 类型的列,但不支持在聚合表中创建 VARBINARY 类型的列。
- 暂不支持 BINARY/VARBINARY 类型的列作为明细表、主键表、更新表的分区键、分桶键、维度列,并且不支持用于 JOIN、GROUP BY、ORDER BY 子句。
- BINARY(M)/VARBINARY(M) 不会对没有对齐的长度做补齐操作。
示例
创建 BINARY 类型的列
建表时,通过关键字 VARBINARY
,指定列 j
为 VARBINARY 类型。
CREATE TABLE `test_binary` (
`id` INT(11) NOT NULL COMMENT "",
`j` VARBINARY NULL COMMENT ""
) ENGINE=OLAP
DUPLICATE KEY(`id`)
COMMENT "OLAP"
DISTRIBUTED BY HASH(`id`)
PROPERTIES (
"replication_num" = "3",
"storage_format" = "DEFAULT"
);
mysql> DESC test_binary;
+-------+-----------+------+-------+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------+------+-------+---------+-------+
| id | int | NO | true | NULL | |
| j | varbinary | YES | false | NULL | |
+-------+-----------+------+-------+---------+-------+
2 rows in set (0.01 sec)
导入数据并存储为 BINARY 类型
StarRocks 支持如下方式导入数据并存储为 BINARY 类型。
- 方式一:通过 INSERT INTO 将数据写入至 BINARY 类型的常量列(例如列
j
),其中常量列以x''
作为前缀。
INSERT INTO test_binary (id, j) VALUES (1, x'abab');
INSERT INTO test_binary (id, j) VALUES (2, x'baba');
INSERT INTO test_binary (id, j) VALUES (3, x'010102');
INSERT INTO test_binary (id, j) VALUES (4, x'0000');
- 方式二:通过 TO_BINARY() 函数将 VARCHAR 类型数据转换为 BINARY 类型。
INSERT INTO test_binary select 5, to_binary('abab', 'hex');
INSERT INTO test_binary select 6, to_binary('abab', 'base64');
INSERT INTO test_binary select 7, to_binary('abab', 'utf8');