skip to Main Content

Trying to format the number as per the given format and culture.

Given:

-4059587.225000, --Value
'#,##0.00;(#,##0.00)' --Format
'en-US' --Culture

Will have many patterns, the given one is for example.

Expected output: (4,059,587.23)

In SQL Server we have format() function, what’s the equivalent in PostgreSQL?

My try:

select to_char( -4059587.225000, '#,##0.00;(#,##0.00)' );

Error:

multiple decimal points

2

Answers


  1. Use to_char:

    SET lc_numeric = 'en_US';
    
    SELECT translate(to_char(-4059587.225000, '9G999G999D99PRFM'), '<>', '()');
    
       translate    
    ════════════════
     (4,059,587.23)
    (1 row)
    

    The documentation describes the available formats.

    Login or Signup to reply.
  2. How about:

    select 
    concat( to_char( -4059587.225000, '#,##0.00;' ), to_char( -4059587.225000, '(#,##0.00)' ) );
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search