es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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

Tags:  , ,

Answer

  1. Avatar for 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:

    SELECT 
        amount, 
        REPLACE(REPLACE(REGEXP_REPLACE(amount, '[^0-9.,]', '', 'g'), ',', '_'), '.', ',')::NUMERIC AS formatted_amount
    FROM AmountTable;
    

    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ón REPLACE. 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:

      Amount
    $1,000.00
    $3,000.00
    $200,000.00
    $1,234,567.40
    

    ¡Espero que esto te sea de ayuda!

Comments are closed.