Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
VARBYTEjenis
GunakanVARBYTE,VARBINARY, atau BINARY VARYING kolom untuk menyimpan nilai biner panjang variabel dengan batas tetap.
varbyte [ (n) ]
Jumlah maksimum byte (n) dapat berkisar dari 1 — 16.777.216. Defaultnya adalah 64.000.
Beberapa contoh di mana Anda mungkin ingin menggunakan tipe VARBYTE data adalah sebagai berikut:
Menggabungkan tabel pada VARBYTE kolom.
Membuat tampilan terwujud yang berisi VARBYTE kolom. Penyegaran inkremental dari tampilan terwujud yang berisi VARBYTE kolom didukung. Namun, fungsi agregat selainCOUNT,MIN, MAX dan GROUP BY pada VARBYTE kolom tidak mendukung penyegaran tambahan.
Untuk memastikan bahwa semua byte adalah karakter yang dapat dicetak, Amazon Redshift menggunakan format hex untuk mencetak nilai. VARBYTE Misalnya, berikut ini SQL mengubah string 6162
heksadesimal menjadi nilai biner. Meskipun nilai yang dikembalikan adalah nilai biner, hasilnya dicetak sebagai heksadesimal6162
.
select from_hex('6162'); from_hex ---------- 6162
Amazon Redshift mendukung casting antara VARBYTE dan tipe data berikut:
CHAR
VARCHAR
SMALLINT
INTEGER
BIGINT
Saat casting dengan CHAR dan VARCHAR format UTF -8 digunakan. Untuk informasi selengkapnya tentang format UTF -8, lihatTO_VARBYTE. Saat casting dari SMALLINTINTEGER,, dan BIGINT jumlah byte dari tipe data asli dipertahankan. Itu adalah dua byte untukSMALLINT, empat byte untukINTEGER, dan delapan byte untuk. BIGINT
SQLPernyataan berikut melemparkan VARCHAR string ke aVARBYTE. Meskipun nilai yang dikembalikan adalah nilai biner, hasilnya dicetak sebagai heksadesimal616263
.
select 'abc'::varbyte; varbyte --------- 616263
SQLPernyataan berikut memberikan CHAR nilai dalam kolom ke aVARBYTE. Contoh ini membuat tabel dengan CHAR (10) kolom (c), menyisipkan nilai karakter yang lebih pendek dari panjang 10. Cast yang dihasilkan melapisi hasil dengan karakter spasi (hex'20') ke ukuran kolom yang ditentukan. Meskipun nilai yang dikembalikan adalah nilai biner, hasilnya dicetak sebagai heksadesimal.
create table t (c char(10)); insert into t values ('aa'), ('abc'); select c::varbyte from t; c ---------------------- 61612020202020202020 61626320202020202020
SQLPernyataan berikut melemparkan SMALLINT string ke aVARBYTE. Meskipun nilai yang dikembalikan adalah nilai biner, hasilnya dicetak sebagai heksadesimal0005
, yang merupakan dua byte atau empat karakter heksadesimal.
select 5::smallint::varbyte; varbyte --------- 0005
SQLPernyataan berikut melemparkan INTEGER ke a. VARBYTE Meskipun nilai yang dikembalikan adalah nilai biner, hasilnya dicetak sebagai heksadesimal00000005
, yaitu empat byte atau delapan karakter heksadesimal.
select 5::int::varbyte; varbyte ---------- 00000005
SQLPernyataan berikut memberikan a BIGINT ke a. VARBYTE Meskipun nilai yang dikembalikan adalah nilai biner, hasilnya dicetak sebagai heksadesimal0000000000000005
, yaitu delapan byte atau 16 karakter heksadesimal.
select 5::bigint::varbyte; varbyte ------------------ 0000000000000005
Fitur Amazon Redshift yang mendukung tipe VARBYTE data meliputi:
Keterbatasan saat menggunakan tipe VARBYTE data dengan Amazon Redshift
Berikut ini adalah batasan saat menggunakan tipe VARBYTE data dengan Amazon Redshift:
Amazon Redshift Spectrum mendukung VARBYTE tipe data hanya untuk Parket ORC dan file.
Editor kueri Amazon Redshift dan editor kueri Amazon Redshift v2 belum sepenuhnya VARBYTE mendukung tipe data. Oleh karena itu, gunakan SQL klien yang berbeda saat bekerja dengan VARBYTE ekspresi.
Sebagai solusi untuk menggunakan editor kueri, jika panjang data Anda di bawah 64 KB dan kontennya valid UTF -8, Anda dapat mentransmisikan VARBYTE nilai keVARCHAR, misalnya:
select to_varbyte('6162', 'hex')::varchar;
Anda tidak dapat menggunakan tipe VARBYTE data dengan fungsi yang ditentukan pengguna Python atau Lambda (). UDFs
Anda tidak dapat membuat HLLSKETCH kolom dari VARBYTE kolom atau menggunakan APPROXIMATE COUNT DISTINCT pada VARBYTE kolom.
VARBYTEnilai yang lebih besar dari 1 MB hanya dapat dicerna dari format file berikut:
Parquet
Teks
Nilai yang dipisahkan koma () CSV