VARBYTE 类型 - AWS Clean Rooms

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

VARBYTE 类型

使用VARBYTEVARBINARY、或BINARYVARYING列存储具有固定限制的可变长度二进制值。

varbyte [ (n) ]

最大字节数(n)范围为 1 到 1,024,000。默认值为 64,000。

以下是您可能想要使用VARBYTE数据类型的一些示例:

  • 在VARBYTE列上联接表。

  • 创建包含VARBYTE列的物化视图。支持对包含VARBYTE列的实例化视图进行增量刷新。但是,VARBYTE列上除了COUNTMIN、MAX和 BY GROUP 之外的聚合函数不支持增量刷新。

为确保所有字节都是可打印字符,请 AWS Clean Rooms 使用十六进制格式打印VARBYTE值。例如,以下内容SQL将十六进制字符串6162转换为二进制值。尽管返回值为二进制值,但结果将以十六进制形式 6162 打印。

select from_hex('6162'); from_hex ---------- 6162

AWS Clean Rooms 支持在VARBYTE和以下数据类型之间进行转换:

  • CHAR

  • VARCHAR

  • SMALLINT 或 SHORT

  • INTEGER

  • BIGINT 或 LONG

以下SQL语句将VARCHAR字符串转换为 a VARBYTE。尽管返回值为二进制值,但结果将以十六进制形式 616263 打印。

select 'abc'::varbyte; varbyte --------- 616263

以下SQL语句将列中的CHAR值转换为 a VARBYTE。此示例创建了一个包含 CHAR (10) 列 (c) 的表,插入长度小于 10 的字符值。生成的转换使用空格字符(hex'20')将结果填充到定义的列大小。尽管返回值是二进制值,但结果将以十六进制形式打印。

create table t (c char(10)); insert into t values ('aa'), ('abc'); select c::varbyte from t; c ---------------------- 61612020202020202020 61626320202020202020

以下SQL语句将SMALLINT字符串转换为 a VARBYTE。尽管返回值是二进制值,但结果将以十六进制形式 0005 打印,为 2 个字节或 4 个十六进制字符。

select 5::smallint::varbyte; varbyte --------- 0005

以下SQL语句将 a 转换INTEGER为 a VARBYTE。尽管返回值是二进制值,但结果将以十六进制形式 00000005 打印,为 4 个字节或 8 个十六进制字符。

select 5::int::varbyte; varbyte ---------- 00000005

以下SQL语句将 a 转换BIGINT为 a VARBYTE。尽管返回值是二进制值,但结果将以十六进制形式 0000000000000005 打印,为 8 个字节或 16 个十六进制字符。

select 5::bigint::varbyte; varbyte ------------------ 0000000000000005

将VARBYTE数据类型与一起使用时的限制 AWS Clean Rooms

以下是将VARBYTE数据类型与配合使用时的限制 AWS Clean Rooms:

  • AWS Clean Rooms 仅支持 P VARBYTE arquet 和ORC文件的数据类型。

  • AWS Clean Rooms 查询编辑器尚不完全支持VARBYTE数据类型。因此,在处理VARBYTE表达式时,请使用不同的SQL客户端。

    作为使用查询编辑器的解决方法,如果数据长度低于 64 KB 且内容有效为 UTF -8,则可以将VARBYTE值转换为VARCHAR,例如:

    select to_varbyte('6162', 'hex')::varchar;
  • 您不能将VARBYTE数据类型与 Python 或 Lambda 用户定义的函数 () UDFs 一起使用。

  • 您不能根据HLLSKETCH列创建VARBYTE列,也不能在VARBYTE列APPROXIMATECOUNTDISTINCT上使用。