

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Compatibilidade e conversão dos tipos
<a name="s_Type_conversion"></a>

Os tópicos a seguir descrevem como as regras de conversão de tipos e a compatibilidade de tipos de dados funcionam no AWS Clean Rooms Spark SQL.

**Topics**
+ [Compatibilidade](#s_Type_conversion-compatibility)
+ [Regras gerais de compatibilidade e conversão](#Type_conversion-general-compatibility-and-conversion-rules)
+ [Tipos de conversão implícita](#implicit-conversion-types-spark)

## Compatibilidade
<a name="s_Type_conversion-compatibility"></a>

 A correspondência de tipo de dados e de valores e constantes literais com tipos de dados ocorre durante diversas operações do banco de dados, incluindo o seguinte: 
+ Operações de linguagem de manipulação de dados (DML) em tabelas 
+ Consultas de UNION, INTERSECT e EXCEPT 
+ Expressões de CASOS 
+ Avaliação de predicados, tais como LIKE e IN 
+ Avaliação de funções SQL que fazem comparações ou extrações de dados 
+ Comparações com operadores matemáticos 

Os resultados dessas operações dependem das regras de conversão de tipo e da compatibilidade dos tipos de dados. A *compatibilidade* implica que a one-to-one correspondência de um determinado valor e um determinado tipo de dados nem sempre é necessária. Como alguns tipos de dados são *compatíveis*, uma conversão implícita, ou *coerção*, é possível. Para obter mais informações, consulte [Tipos de conversão implícita](#implicit-conversion-types-spark). Quando os tipos de dados são incompatíveis, você pode às vezes converter um valor de um tipo de dados para outro usando uma função de conversão explícita. 

## Regras gerais de compatibilidade e conversão
<a name="Type_conversion-general-compatibility-and-conversion-rules"></a>

Observe as seguintes regras de compatibilidade e conversão: 
+ Em geral, tipos de dados que se enquadram no mesmo tipo de categoria (como diferentes tipos de dados numéricos) são compatíveis e podem ser implicitamente convertidos. 

  Por exemplo, com a conversão implícita você pode inserir um valor decimal em uma coluna de número inteiro. O decimal é arredondado para produzir um número inteiro. Ou você pode extrair um valor numérico, tal como `2008`, a partir de uma data e inserir este valor uma coluna de inteiro. 
+ Os tipos de dados numéricos impõem condições de estouro que ocorrem quando você tenta inserir valores. out-of-range Por exemplo, um valor decimal com uma precisão de 5 não se enquadra em uma coluna decimal que foi definida com uma precisão de 4. Um número inteiro ou a parte inteira de um decimal nunca é truncada. No entanto, a parte fracionária de um decimal pode ser arredondada para cima ou para baixo, conforme apropriado. Contudo, os resultados de conversões explícitas dos valores selecionados a partir de tabelas não são arredondados.
+ Diferentes tipos de cadeias de caracteres são compatíveis. As sequências de colunas VARCHAR contendo dados de byte único e as sequências de colunas CHAR são comparáveis e implicitamente conversíveis. Strings VARCHAR que contêm dados de multibyte não são comparáveis. Além disso, você pode converter uma sequência de caracteres em uma data, hora, carimbo de data/hora ou valor numérico se a sequência for um valor literal apropriado. Todos os espaços à esquerda ou à direita são ignorados. Por outro lado, você pode converter uma data, hora, timestamp ou valor numérico em uma sequência de caracteres de comprimento fixo ou variável.
**nota**  
Uma string de caracteres que você queira converter em um tipo numérico deve conter uma representação de caractere de um número. Por exemplo, você pode converter as strings `'1.0'` ou `'5.9'` em valores decimais, mas não pode converter a string `'ABC'` em nenhum tipo numérico.
+ Se você comparar valores DECIMAIS com cadeias de caracteres, AWS Clean Rooms tentará converter a cadeia de caracteres em um valor DECIMAL. Ao comparar todos os outros valores numéricos com strings de caracteres, os valores numéricos são convertidos em strings de caracteres. Para impor a conversão oposta (por exemplo, converter strings de caracteres em números inteiros ou converter valores do tipo DECIMAL em strings de caracteres), use uma função explícita, como [Função CAST](CAST_function.md). 
+ Para converter valores do tipo DECIMAL ou NUMERIC de 64 bits em uma precisão mais alta, você deve usar uma função de conversão explícita tal como CAST ou CONVERT. 

## Tipos de conversão implícita
<a name="implicit-conversion-types-spark"></a>

Há dois tipos de conversão implícita: 
+ Conversões implícitas em atribuições, como definir valores em comandos INSERT ou UPDATE
+ Conversões implícitas em expressões, como realizar comparações na cláusula WHERE

A tabela a seguir lista os tipos de dados que podem ser convertidos implicitamente em atribuições ou expressões. Você também pode usar uma função de conversão explícita para realizar essas conversões. 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/clean-rooms/latest/sql-reference/s_Type_conversion.html)

**nota**  
As conversões implícitas entre DATE, TIME, TIMESTAMP\$1LTZ, TIMESTAMP\$1NTZ ou cadeias de caracteres usam o fuso horário da sessão atual.   
O tipo de dados VARBYTE não pode ser convertido explicitamente em outro tipo de dados. Para obter mais informações, consulte [Função CAST](CAST_function.md). 