PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como converter uma string em um valor numérico no PostgreSQL

Problema:


Você gostaria de converter uma string em um valor decimal no PostgreSQL.

Vamos converter o valor em uma string para um tipo de dados DECIMAL.

Solução 1:


Usaremos o operador ::. Aqui está a consulta que você escreveria:
SELECT ' 5800.79 '::DECIMAL;

Aqui está o resultado:
numérico
5800,79

Como você percebe, os espaços à esquerda e à direita foram removidos.

Discussão:


Use o operador ::para converter strings contendo valores numéricos para o tipo de dados DECIMAL. Em nosso exemplo, convertemos a string ‘ 5800,79 ’ para 5800,79 (um valor DECIMAL).

Este operador é usado para converter entre diferentes tipos de dados. É muito popular no PostgreSQL. Você também pode usar o operador SQL padrão, CAST() , em vez do :: operador.

Solução 2:

SELECT CAST(' 5800.79 ' AS DECIMAL );

Aqui está o resultado:
numérico
5800,79

Observe que CAST() , como o :: operador, remove espaços adicionais no início e no final da string antes de convertê-la em um número.

O banco de dados PostgreSQL fornece mais uma maneira de converter. Use o TO_NUMBER() função se você precisar converter strings mais complicadas. Esta função recebe dois argumentos:a string a ser convertida e a máscara de formato que indica como cada caractere da string deve ser interpretado. Veja o exemplo abaixo:

Solução 3:

SELECT TO_NUMBER(' 5 800,79- ', 'FM9G999D99S' );

Aqui está o resultado:
numérico
-5800,79

A string de formato descreve a string que contém o número (valor de entrada como string). Neste exemplo, esta máscara contém o símbolo ‘FM’, que remove os espaços à esquerda e à direita. O '9' indica um dígito (no nosso exemplo, 5) e o 'G' representa um grupo de dígitos (no nosso exemplo, um espaço indica um grupo de milhares).

Em seguida, '999' indica mais três dígitos (800).

O símbolo 'D' especifica um marcador decimal (aqui, um ponto/ponto '.'). Após o símbolo decimal vem '99', ou dois dígitos fracionários.

O último símbolo, 'S', especifica o uso de um sinal de mais ou menos (nosso número é negativo, então recebe um sinal de menos).

Aqui estão os símbolos mais usados ​​para esta máscara:
símbolo descrição
FM zeros à esquerda e espaços em branco
9 um dígito
. ponto decimal local
G separador de grupo
D separador decimal local
S sinal de menos ou mais
L símbolo da moeda local

Você pode encontrar mais informações de formatação numérica na documentação do PostgreSQL.