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.