0

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

MAK
  • 6,824
  • 25
  • 74
  • 131

2 Answers2

2

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.

Laurenz Albe
  • 209,280
  • 17
  • 206
  • 263
0

How about:

select 
concat( to_char( -4059587.225000, '#,##0.00;' ), to_char( -4059587.225000, '(#,##0.00)' ) );
Reto
  • 1,305
  • 1
  • 18
  • 32