本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
VARBYTE 類型
使用 VARBYTE、 VARBINARY或 BINARYVARYING資料欄來存放具有固定限制的可變長度二進位值。
varbyte [ (n) ]
位元組數上限 (n) 的範圍為 1 – 16,777,216。預設值為 64,000。
您可能想要使用VARBYTE資料類型的一些範例如下:
聯結VARBYTE資料欄上的資料表。
建立包含VARBYTE資料欄的具體化檢視。支援逐步重新整理包含VARBYTE資料欄的具體化檢視。不過,VARBYTE除了 COUNT、 MINMAX和 GROUP BY 欄上的彙總函數不支援增量重新整理。
為了確保所有位元組都是可列印的字元,Amazon Redshift 會使用十六進位格式來列印VARBYTE值。例如,下列 會將十六進位字串SQL轉換為6162
二進位值。即使傳回的值是二進位值,結果仍會列印為十六進位 6162
。
select from_hex('6162'); from_hex ---------- 6162
Amazon Redshift 支援在 VARBYTE和 之間轉換下列資料類型:
CHAR
VARCHAR
SMALLINT
INTEGER
BIGINT
使用 CHAR和 VARCHAR UTF-8 格式投放時。如需 UTF-8 格式的詳細資訊,請參閱 TO_VARBYTE。從 SMALLINT、 轉換時INTEGER,會維護原始資料類型的位元組BIGINT數。也就是 的兩個位元組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資料類型的 Amazon Redshift 功能包括:
搭配 Amazon Redshift 使用VARBYTE資料類型的限制
以下是將VARBYTE資料類型與 Amazon Redshift 搭配使用時的限制:
Amazon Redshift Spectrum 僅支援 Parquet 和 ORC 檔案的VARBYTE資料類型。
Amazon Redshift 查詢編輯器和 Amazon Redshift 查詢編輯器 v2 尚未完全支援VARBYTE資料類型。因此,使用VARBYTE運算式時請使用不同的SQL用戶端。
作為使用查詢編輯器的解決方法,如果您的資料長度低於 64 KB 且內容有效 UTF-8,您可以將VARBYTE值轉換為 VARCHAR,例如:
select to_varbyte('6162', 'hex')::varchar;
您無法搭配 Python 或 Lambda 使用者定義函數 () 使用VARBYTE資料類型UDFs。
您無法從HLLSKETCH資料欄建立VARBYTE資料欄或在資料VARBYTE欄APPROXIMATECOUNTDISTINCT上使用 。
VARBYTE 大於 1 MB 的值只能從下列檔案格式擷取:
Parquet
文字
逗號分隔值 (CSV)