本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
VARBYTE 類型
使用 VARBYTE、VARBINARY 或 BINARY VARYING 欄來儲存具有固定限制的可變長度二進位值。
varbyte [ (n) ]
最大位元組數 (n) 的範圍可以介於 1 - 1,024,000 之間。預設值為 64,000。
可以使用 VARBYTE 資料類型的一些範例如下:
-
在 VARBYTE 欄上聯結資料表。
-
建立包含 VARBYTE 欄的具體化視觀表。支援包含 VARBYTE 欄的具體化視觀表累加式重新整理。但是,VARBYTE 欄上的 COUNT、MIN 和 MAX 和 GROUP BY 以外的彙總函數不支援累加式重新整理。
若要確保所有位元組都是可列印的字元,請 AWS Clean Rooms 使用十六進位格式來列印 VARBYTE 值。例如,下列 SQL 會將十六進位字串 6162
轉換成二進位值。即使傳回的值是二進位值,結果仍會列印為十六進位 6162
。
select from_hex('6162'); from_hex ---------- 6162
AWS Clean Rooms 支持在 VARBYTE 和以下數據類型之間進行轉換:
-
CHAR
-
VARCHAR
-
SMALLINT
-
INTEGER
-
BIGINT
下列 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; c ---------------------- 61612020202020202020 61626320202020202020
下列 SQL 陳述式將 SMALLINT 字串轉換為 VARBYTE。即使傳回的值是二進位值,結果仍會列印為十六進位 0005
,即兩個位元組或四個十六進位字元。
select 5::smallint::varbyte; varbyte --------- 0005
下列 SQL 陳述式將 INTEGER 轉換為 VARBYTE。即使傳回的值是二進位值,結果仍會列印為十六進位 00000005
,即四個位元組或八個十六進位字元。
select 5::int::varbyte; varbyte ---------- 00000005
下列 SQL 陳述式將 BIGINT 轉換為 VARBYTE。即使傳回的值是二進位值,結果仍會列印為十六進位 0000000000000005
,即八個位元組或 16 個十六進位字元。
select 5::bigint::varbyte; varbyte ------------------ 0000000000000005
搭配使用 VARBYTE 資料類型時的限制 AWS Clean Rooms
以下是搭 AWS Clean Rooms配使用 VARBYTE 資料類型時的限制:
-
AWS Clean Rooms 僅支援「實木地板」和「ORC」檔案的 VARBYTE 資料類型。
-
AWS Clean Rooms 查詢編輯器尚未完全支持 VARBYTE 數據類型。因此,在使用 VARBYTE 運算式時,請使用不同的 SQL 用戶端。
作為使用查詢編輯器的解決方法,如果資料長度低於 64 KB 且內容是有效的 UTF-8,則可以將 VARBYTE 值轉換為 VARCHAR,例如:
select to_varbyte('6162', 'hex')::varchar;
-
您不能將 VARBYTE 資料類別搭配 Python 或 Lambda 使用者定義函數 (UDF) 使用。
-
您無法從 VARBYTE 欄建立 HLLSKETCH 欄,也無法在 VARBYTE 欄上使用 APPROXIMATE COUNT DISTINCT。