sql >> Base de Datos >  >> RDS >> PostgreSQL

Cómo convertir una cadena a un valor numérico en PostgreSQL

Problema:

Le gustaría convertir una cadena a un valor decimal en PostgreSQL.

Convirtamos el valor de una cadena a un tipo de datos DECIMAL.

Solución 1:

Usaremos el operador ::. Esta es la consulta que escribirías:

SELECT ' 5800.79 '::DECIMAL;

Aquí está el resultado:

numérico
5800.79

Como notará, se eliminaron los espacios iniciales y finales.

Discusión:

Utilice el operador ::para convertir cadenas que contengan valores numéricos al tipo de datos DECIMAL. En nuestro ejemplo, convertimos la cadena ' 5800.79 ' a 5800.79 (un valor DECIMAL).

Este operador se utiliza para convertir entre diferentes tipos de datos. Es muy popular dentro de PostgreSQL. También puede usar el operador SQL estándar, CAST() , en lugar del :: operador.

Solución 2:

SELECT CAST(' 5800.79 ' AS DECIMAL );

Aquí está el resultado:

numérico
5800.79

Note que CAST() , como el :: operador, elimina los espacios adicionales al principio y al final de la cadena antes de convertirla en un número.

La base de datos PostgreSQL proporciona una forma más de convertir. Usa el TO_NUMBER() función si necesita convertir cadenas más complicadas. Esta función toma dos argumentos:la cadena a convertir y la máscara de formato que indica cómo debe interpretarse cada carácter de la cadena. Vea el siguiente ejemplo:

Solución 3:

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

Aquí está el resultado:

numérico
-5800.79

La cadena de formato describe la cadena que contiene el número (valor de entrada como cadena). En este ejemplo, esta máscara contiene el símbolo 'FM', que elimina los espacios iniciales y finales. El '9' indica un dígito (en nuestro ejemplo, 5) y la 'G' representa un grupo de dígitos (en nuestro ejemplo, un espacio indica un grupo de miles).

A continuación, '999' indica tres dígitos más (800).

El símbolo 'D' especifica un marcador decimal (aquí, un punto/punto '.'). Después del símbolo decimal viene '99', o dos dígitos fraccionarios.

El último símbolo, 'S', especifica el uso de un signo más o menos (nuestro número es negativo, por lo que recibe un signo menos).

Estos son los símbolos más utilizados para esta máscara:

símbolo descripción
FM ceros iniciales y espacios en blanco
9 un dígito
. punto decimal local
G separador de grupos
D separador decimal local
S signo menos o más
L símbolo de moneda local

Puede encontrar más información sobre formato numérico en la documentación de PostgreSQL.