- Categorias:
CAST , ::
¶
Converte um valor de um tipo de dados em outro tipo de dados. As semânticas de CAST são as mesmas semânticas das funções de conversão TO_ datatype
correspondentes. Se a conversão não for possível, um erro é gerado. Para obter mais detalhes, consulte as funções de conversão individuaisTO_ datatype
.
O operador ::
fornece uma sintaxe alternativa para CAST.
- Consulte também:
Sintaxe¶
CAST( <source_expr> AS <target_data_type> )
[ RENAME FIELDS | ADD FIELDS ]
<source_expr> :: <target_data_type>
Argumentos¶
source_expr
Expressão de qualquer tipo de dados suportado para ser convertido em um tipo de dados diferente.
target_data_type
O tipo de dados para o qual a expressão deve ser convertida. Se o tipo de dados oferecer suporte a propriedades adicionais, tais como precisão e escala (para números/decimais), as propriedades podem ser incluídas.
RENAME FIELDS
Para OBJECTs estruturados, especifica que você deseja alterar o OBJECT para usar diferentes pares chave-valor. Os valores no objeto original são copiados para os novos pares chave-valor na ordem em que aparecem.
Para obter um exemplo, consulte Exemplo: como alterar os nomes da chave em um OBJECT.
ADD FIELDS
Para OBJECTs estruturados, especifica que você deseja adicionar pares chave-valor ao OBJECT.
Para obter um exemplo, consulte Exemplo: como adicionar chaves a um OBJECT.
Os valores das chaves recém-adicionadas serão definidos como NULL. Se você quiser atribuir um valor a essas chaves, chame a função OBJECT_INSERT.
Notas de uso¶
Se a escala não for suficiente para manter o valor de entrada, a função arredonda o valor.
Se a precisão não for suficiente para manter o valor de entrada, a função gera um erro.
Quando colunas numéricas são explicitamente convertidas em formulários do tipo de dados inteiros durante um descarregamento de dados em arquivos Parquet, o tipo de dados destas colunas nos arquivos Parquet é INT. Para obter mais informações, consulte Conversão explícita de colunas numéricas em tipos de dados Parquet.
Exemplos¶
Converter uma cadeia de caracteres contendo um número em decimal com escala especificada (2):
SELECT CAST('1.2345' AS DECIMAL(15,2)); +---------------------------------+ | CAST('1.2345' AS DECIMAL(15,2)) | |---------------------------------| | 1.23 | +---------------------------------+
Converter a mesma cadeia de caracteres em decimal com a escala 5, usando a notação ::
:
SELECT '1.2345'::DECIMAL(15,5); +-------------------------+ | '1.2345'::DECIMAL(15,5) | |-------------------------| | 1.23450 | +-------------------------+
Converter um número em um número inteiro:
SELECT CAST(1.56 AS INTEGER); +-----------------------+ | CAST(1.56 AS INTEGER) | |-----------------------| | 2 | +-----------------------+
Converter uma cadeia de caracteres contendo uma data em um carimbo de data/hora:
SELECT CAST('05-Mar-2014' AS TIMESTAMP); +----------------------------------+ | CAST('05-MAR-2014' AS TIMESTAMP) | |----------------------------------| | 2014-03-05 00:00:00.000 | +----------------------------------+