在 VARBYTE 列上联接表。
创建包含 VARBYTE 列的实体化视图。支持包含 VARBYTE 列的实体化视图的增量刷新。但是,除了 COUNT、MIN、MAX 和 GROUP BY 以外,VARBYTE 列上的聚合函数不支持增量刷新。
为确保所有字节都是可打印字符,请AWS Clean Rooms使用十六进制格式打印 VARBYTE 值。例如,以下 SQL 将十六进制字符串
6162
转换为二进制值。尽管返回值为二进制值,但结果将以十六进制形式
6162
打印。
select from_hex('6162');
from_hex
----------
6162
AWS Clean Rooms支持在 VARBYTE 和以下数据类型之间进行转换:
以下 SQL 语句将 VARCHAR 字符串转换为 VARBYTE。尽管返回值为二进制值,但结果将以十六进制形式
616263
打印。
select 'abc'::varbyte;
varbyte
---------
616263
以下 SQL 语句将列中的 CHAR 值转换为 VARBYTE。此示例创建一个包含 CHAR(10) 列(c)的表,插入长度小于 10 的字符值。生成的转换使用空格字符(hex'20')将结果填充到定义的列大小。尽管返回值是二进制值,但结果将以十六进制形式打印。
create table t (c char(10));
insert into t values ('aa'), ('abc');
select c::varbyte from t;
----------------------
61612020202020202020
61626320202020202020
以下 SQL 语句将 SMALLINT 字符串转换为 VARBYTE。尽管返回值是二进制值,但结果将以十六进制形式
0005
打印,为 2 个字节或 4 个十六进制字符。
select 5::smallint::varbyte;
varbyte
---------
0005
以下 SQL 语句将 INTEGER 转换为 VARBYTE。尽管返回值是二进制值,但结果将以十六进制形式
00000005
打印,为 4 个字节或 8 个十六进制字符。
select 5::int::varbyte;
varbyte
----------
00000005
以下 SQL 语句将 BIGINT 转换为 VARBYTE。尽管返回值是二进制值,但结果将以十六进制形式
0000000000000005
打印,为 8 个字节或 16 个十六进制字符。
select 5::bigint::varbyte;
varbyte
------------------
0000000000000005
将 VARBYTE 数据类型与一起使用时的限制 AWS Clean Rooms
以下是将 VARBYTE 数据类型与配合AWS Clean Rooms使用时的限制:
AWS Clean Rooms仅支持 Parquet 和 ORC 文件的 VARBYTE 数据类型。
AWS Clean Rooms查询编辑器尚未完全支持 VARBYTE 数据类型。因此,在处理 VARBYTE 表达式时,请使用不同的 SQL 客户端。
作为使用查询编辑器的解决方法,如果您的数据长度低于 64 KB 并且内容是有效的 UTF-8,那么您可以将 VARBYTE 值转换为 VARCHAR,例如:
select to_varbyte('6162', 'hex')::varchar;