

 O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a [publicação de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Tipo VARBYTE
<a name="r_VARBYTE_type"></a>

Use uma coluna VARBYTE, VARBINARY ou BINARY VARYING para armazenar valores binários de tamanho variável com limite fixo. 

```
varbyte [ (n) ]
```

O número máximo de bytes (*n*) pode variar de 1 a 16.777.216. O padrão é 64.000. 

Estes são alguns exemplos em que convém usar um tipo de dados VARBYTE:
+ Unir tabelas em colunas VARBYTE.
+ Criar visões materializadas que contenham colunas VARBYTE. Há suporte para a atualização incremental de visões materializadas que contêm colunas VARBYTE. Porém, funções agregadas que não sejam COUNT, MIN e MAX e GROUP BY nas colunas VARBYTE não são compatíveis com atualização incremental.

Para garantir que todos os bytes sejam caracteres imprimíveis, o Amazon Redshift usa o formato hexadecimal para imprimir valores VARBYTE. Por exemplo, o seguinte SQL converte a cadeia de caracteres hexadecimal `6162` em um valor binário. Mesmo que o valor retornado seja um valor binário, os resultados são impressos como hexadecimais `6162`.

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

O Amazon Redshift é compatível com a conversão entre VARBYTE e os seguintes tipos de dados:
+ CHAR
+ VARCHAR
+ SMALLINT
+ INTEGER
+ BIGINT

Ao converter CHAR e VARCHAR, utiliza-se o formato UTF-8. Para obter mais informações sobre o formato do UTF-8, consulte [TO\$1VARBYTE](r_TO_VARBYTE.md). Ao converter SMALLINT, INTEGER e BIGINT, mantém-se o número de bytes do tipo de dados original. São dois bytes para SMALLINT, quatro bytes para INTEGER e oito bytes para BIGINT.

A instrução SQL a seguir converte uma cadeia de caracteres VARCHAR para VARBYTE. Mesmo que o valor retornado seja um valor binário, os resultados são impressos como hexadecimais `616263`.

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

A instrução SQL a seguir converte um valor CHAR em uma coluna para VARBYTE. Este exemplo cria uma tabela com uma coluna (c) CHAR(10), insere valores de caracteres menores que o comprimento de 10. A conversão resultante insere o resultado com caracteres de espaço (hex'20') para o tamanho de coluna definido. Mesmo que o valor retornado seja um valor binário, os resultados são impressos como hexadecimais.

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

A instrução SQL a seguir converte uma cadeia de caracteres SMALLINT para VARBYTE. Mesmo que o valor retornado seja um valor binário, os resultados são impressos como hexadecimais `0005`, que são caracteres hexadecimais de dois ou quatro bytes.

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

A instrução SQL a seguir converte um INTEGER para VARBYTE. Mesmo que o valor retornado seja um valor binário, os resultados são impressos como hexadecimais `00000005`, que são caracteres hexadecimais de quatro ou oito bytes.

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

A instrução SQL a seguir converte um BIGINT para VARBYTE. Mesmo que o valor retornado seja um valor binário, os resultados são impressos como hexadecimais `0000000000000005`, que são caracteres hexadecimais de oito ou 16 bytes.

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

Os recursos do Amazon Redshift compatíveis com o tipo de dados VARBYTE incluem:
+ [Operadores VARBYTE](r_VARBYTE_OPERATORS.md)
+ [CONCAT](r_CONCAT.md)
+ [LEN](r_LEN.md)
+ [Função LENGTH](r_LENGTH.md)
+ [OCTET\$1LENGTH](r_OCTET_LENGTH.md)
+ [Função SUBSTRING](r_SUBSTRING.md)
+ [FROM\$1HEX](r_FROM_HEX.md)
+ [TO\$1HEX](r_TO_HEX.md)
+ [FROM\$1VARBYTE](r_FROM_VARBYTE.md)
+ [TO\$1VARBYTE](r_TO_VARBYTE.md)
+ [GETBIT](r_GETBIT.md)
+ [Carregar uma coluna do tipo de dados VARBYTE](copy-usage-varbyte.md)
+ [Descarregar uma coluna do tipo de dados VARBYTE](r_UNLOAD.md#unload-usage-notes)

## Limitações ao usar dados do tipo VARBYTE com o Amazon Redshift
<a name="varbyte-limitations"></a>

Estas são as limitações ao usar dados do tipo VARBYTE com o Amazon Redshift: 
+ O Amazon Redshift Spectrum é compatível com o tipo de dado VARBYTE somente para arquivos Parquet e ORC.
+ O editor de consultas do Amazon Redshift e o editor de consultas do Amazon Redshift v2 ainda não são totalmente compatíveis com o tipo de dados VARBYTE. Portanto, use um cliente SQL diferente ao trabalhar com expressões VARBYTE. 

  Como uma solução alternativa para usar o editor de consultas, se o comprimento dos dados for 16 milhões de bytes ou menos e o conteúdo for UTF-8 válido, você poderá converter os valores VARBYTE em VARCHAR, por exemplo:

  ```
  select to_varbyte('6162', 'hex')::varchar;
  ```
+ Não é possível usar tipos de dados VARBYTE com funções definidas pelo usuário (UDFs) em Python ou Lambda. 
+ Não é possível criar uma coluna HLLSKETCH a partir de uma coluna VARBYTE ou usar APPROXIMATE COUNT DISTINCT em uma coluna VARBYTE. 
+ Valores de VARBYTE maiores que 1 MB só podem ser ingeridos nos seguintes formatos de arquivo:
  + Parquet
  + Texto
  + Valores separados por vírgula (CSV)