Introdução

Quando você trabalha com dados armazenados no PostgreSQL, você pode ter alguns dados que você preferiria tratar como um tipo de dado diferente. Por exemplo, você pode ter um valor de texto que representa um número, como “53”. Para realizar cálculos sobre esse valor, pode fazer mais sentido converter esse valor para um número inteiro. Em Postgres, a função CAST é usada para converter o tipo de dados de um valor para um tipo de dados diferente. O valor deve ser compatível com o tipo de dado visado; caso contrário, um erro será retornado. Neste artigo do PostgreSQL, vamos mostrar como usar a função PostgreSQL CAST e rever alguns exemplos de diferentes conversões.

Prerequisites

Antes de prosseguir com este tutorial, dois pré-requisitos chave devem estar no lugar:

  • Você deve ter o PostgreSQL instalado e configurado no seu computador.
  • Você deve ter algum conhecimento básico do PostgreSQL.

Função PostgreSQL CAST

Existem duas maneiras de CAST um valor no PostgreSQL. No primeiro método, nós especificamos o valor e o tipo de dado alvo dentro dos parênteses da função CAST. A sintaxe é mostrada abaixo:

1
SELECT CAST ( VALUE AS TYPE )

Outra maneira de lançar um valor é usando a notação :: entre o valor e o tipo de dado visado. Você pode ver a sintaxe abaixo:

1
SELECT VALUE::TYPE

Nesta sintaxe, value representa o valor que você quer lançar ou alterar o tipo de dado.O type representa o tipo de dado que você está visando para este valor; alguns valores possíveis de type incluem INTEGER, FLOAT e CHAR.

Postgres CAST Example

Vejamos alguns exemplos de como usar o Postgres CAST function.

Postgres CAST to String

Para o nosso primeiro exemplo, vamos lançar um valor como um valor string. Podemos ver como isto é feito na seguinte declaração SELECT:

1
2
3
4
5
SELECIONE O ELENCO( 5137 COMO TEXTO );
texto
——
5137
(1 ROW)

Postgres CAST to Integer

Nextra, vamos converter um valor com um tipo de texto para um inteiro. A seguinte declaração mostra como é feito:

1
2
3
4
5
SELECCIONE ELENCO( ‘214’ COMO INTEIRO );
int4
——
214
(1 ROW)

No exemplo mostrado abaixo, vamos lançar um valor inteiro para o tipo de dado MONEY. Podemos ver como funciona na seguinte afirmação:

1
2
3
4
5
SELECT CAST(7419 AS MONEY);
money
———–
$7.419.00
(1 ROW)

Postgres CAST to Intervalo

Nosso próximo exemplo irá lançar um valor de texto para o tipo de dados INTERVAL. A seguinte instrução SELECT mostra como funciona:

1
2
3
4
5
SELECT CAST (‘1 ano 2 meses 7 dias’ AS INTERVALO);
INTERVAL
———————-
1 ANO 2 mons 7 dias
(1 ROW)

Postgres CAST até à data

Tambem podemos usar a função CAST para converter um valor de texto para um tipo de dados DATE como visto no exemplo abaixo:

1
2
3
4
5
SELECT CAST( ’24 de Julho de 1999′ COMO DATA );
DATE
————
1999-07-24
(1 ROW)

Aqui está outro caminho para CAST texto como data:

1
2
3
4
5
SELECCIONAR ELENCO ( ’24-07-99′ COMO DATA );
DATE
————
1999-07-24
(1 ROW)

Postgres CAST With Trim

No exemplo mostrado abaixo, vamos aparar um valor de texto, então vamos lançar o resultado que é retornado de TRIM:

1
2
3
4
5
SELECT CAST( TRIM( DATA DE ‘DATA’ DE ‘DATA 28 de Janeiro de 1998’ ) COMO DATA);
ltrim
————
1998-01-28
(1 ROW)

Postgres CAST With Concatenation

Podemos concatenar duas ou mais cordas usando o operador ||. No nosso exemplo final, vamos concatenar um valor de string com um valor de data que é fundido a TEXT. A declaração abaixo mostra como é feito:

1
2
3
4
5
SELECT ‘The current date is ‘ || CAST( CURRENT_DATE AS TEXT );
?COLUMN?
——————————–
A DATA CORRENTE É 2020-03-28
(1 ROW)

Conclusão

Quando você consulta dados no PostgreSQL, você pode querer que os valores de certas colunas sejam convertidos para um tipo de dados diferente. Alterar o tipo de dados pode facilitar a realização de cálculos e operações de processamento dos dados que são retornados. Neste artigo, mostramos como utilizar a função Postgres CAST para converter o tipo de dados de um valor. Se você seguiu todos os exemplos apresentados neste artigo, você será capaz de usar a função CAST efetivamente em suas próprias consultas ao PostgreSQL.

Deixe uma resposta

O seu endereço de email não será publicado.