變量字節類型 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

變量字節類型

使用 VARBITY、VAR二元二元或二元變化資料欄,來儲存具有固定限制的可變長度二元值。

varbyte [ (n) ]

最大字節數 (n)的範圍為 1—1,024,000。默認值為 64,000。

您可能希望使用 VARBYTE 數據類型的一些示例如下:

  • 連接 VAR字節列上的表。

  • 創建包含 VARBYTE 列的實例化視圖。支持對包含 VARBYTE 列的實例化視圖進行增量刷新。但是,VARBYTE 列上的 COUNT、最小值和最大值以外的聚合函數不支持增量刷新。

為確保所有字節都是可打印字符,Amazon Redshift 使用十六進制格式來打印 VARBYTE 值。例如,以下 SQL 將十六進制字符串轉換6162轉換為二進位值。即使返回的值是二進制值,但結果將打印為十六進制6162

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

Amazon Redshift 支援在 VARBYTY 與下列資料類型之間進行轉換:

  • CHAR

  • VARCHAR

  • SMALLINT

  • INTEGER

  • BIGINT

當使用 CHAR 和瓦卡爾進行投射時,使用 UTF-8 格式。有關 UTF-8 格式的詳細資訊,請參見多變量字節。從 SALLINT、INTEGINT 和 BIGINT 進行轉換時,保留原始數據類型的字節數。這是兩個字節的小型,四個字節表示整數,八個字節表示 BIGINT。

以下 SQL 語句將 VARCHAR 字符串轉換為 VARBYTE。即使返回的值是二進制值,但結果將打印為十六進制616263

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

以下 SQL 語句將列中的 CHAR 值轉換為 VARBYTE。此示例創建一個具有 CHAR (10) 列 (c) 的表,插入長度短於 10 的字符值。生成的轉換使用空格字符(he'20 ')將結果填充到定義的列大小。即使返回的值是二進制值,結果也會打印為十六進制。

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

以下 SQL 語句將一個小字符串轉換為 VAR字節。即使返回的值是二進制值,但結果將打印為十六進制0005,它是兩個字節或四個十六進制字符。

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

下面的 SQL 語句將一個整數轉換為一個 VAR字節。即使返回的值是二進制值,但結果將打印為十六進制00000005,這是四個字節或八個十六進制字符。

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

下面的 SQL 語句將一個大字節轉換為一個 VAR字節。即使返回的值是二進制值,但結果將打印為十六進制0000000000000005,這是八個字節或 16 個十六進制字符。

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

支持 VARBYTY 數據類型的 Amazon Redshift 功能包括:

將 VARBYTE 數據類型與 Amazon Redshift 結合使用時的限制

以下是您在 Amazon Redshift 時使用 VARBYTYT 資料類型時的限制:

  • Amazon Redshift Spectrum 不支援 VARBYTY 資料類型。因此,您無法使用 VARBYTY 資料欄來創建或更改外部表。

  • Amazon Redshift 查詢編輯器和 Amazon Redshift 查詢編輯器 v2 尚未完全支持 VARBYTE 數據類型。因此,使用 VARBYTE 表達式時使用不同的 SQL 客户端。

    作為使用查詢編輯器的解決方法,如果數據的長度低於 64 KB 且內容是有效的 UTF-8,則可以將 VARBYTY 值轉換為 VARCHAR,例如:

    select to_varbyte('6162', 'hex')::varchar;
  • 您無法與 Python 或 Lambda 使用者定義函數 (UDF) 一起使用 VARBYTYE 資料類型。

  • 您無法使用 VARBYTYTE 資料行做為 Amazon Redshift 資料表的排序索引鍵或分配索引鍵。

  • 您不能從 VAR字節列創建 HLLSHOCH 列,也不能在 VAR字節列上使用近似計數不同。