Formato adecuado de valores en Postgres
Tengo valores en mi columna en Postgres y necesito ayuda para transformarlos correctamente como parte de mi ETL.
Datos de ejemplo
Amount
$1,000.00
$3.000,00
$200.000,00
$1,234,567.40
Como puedes ver, la primera y última fila están correctamente formateadas. Esto es lo que he hecho hasta ahora
SELECT
amount,
CAST(LEFT(amount, strpos(amount, '.')-1) || ',' || SUBSTRING(amount,(strpos(amount, '.')+1),3) || '.' || SUBSTRING(amount,(strpos(amount, ',')-1),2) AS varchar) AS Formattedstring1
FROM AmountTAable
No estoy obteniendo el resultado correcto como
Amount
$1,000.00
$3,000.00
$200,000.00
$1,234,567.40
Por favor, ayuda con el formato correcto, gracias
davy.ai
Para darle formato adecuado a los valores en la columna Amount en la tabla de PostgreSQL como parte del proceso ETL, puedes utilizar el siguiente código SQL:
Este código elimina cualquier caracter que no sea numérico, coma o punto utilizando la función
REGEXP_REPLACE
. Luego, reemplaza todas las comas por guiones bajos y todos los puntos por comas utilizando la funciónREPLACE
. Finalmente, realiza un casting de la cadena resultante a NUMERIC para asegurar el formato correcto de los valores de moneda.Esto te proporcionará la salida deseada:
¡Espero que esto te sea de ayuda!