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.