Thread: BUG #3237: function to_char() returns wrong value

BUG #3237: function to_char() returns wrong value

From
"Robert wang"
Date:
The following bug has been logged online:

Bug reference:      3237
Logged by:          Robert wang
Email address:      robert.wang@eitec.com.tw
PostgreSQL version: 8.2
Operating system:   Windows 2000 professional
Description:        function to_char() returns wrong value
Details:

I run this following SQL command in pgAdminIII:

Select to_char(12345,'00000')

but it always returns ' 12345' (hex code: 20 31 32 33 34 35).It always adds
one space char in the left side.

I have to use another function substring() as followings to get my expected
value.

Select substring(to_char(12345,'00000'),from ' ' for 5)

it exactly returns '12345' which I expect.

Re: BUG #3237: function to_char() returns wrong value

From
Bruce Momjian
Date:
Robert wang wrote:
>
> The following bug has been logged online:
>
> Bug reference:      3237
> Logged by:          Robert wang
> Email address:      robert.wang@eitec.com.tw
> PostgreSQL version: 8.2
> Operating system:   Windows 2000 professional
> Description:        function to_char() returns wrong value
> Details:
>
> I run this following SQL command in pgAdminIII:
>
> Select to_char(12345,'00000')
>
> but it always returns ' 12345' (hex code: 20 31 32 33 34 35).It always adds
> one space char in the left side.
>
> I have to use another function substring() as followings to get my expected
> value.
>
> Select substring(to_char(12345,'00000'),from ' ' for 5)
>
> it exactly returns '12345' which I expect.

My guess is that the extra space is for the minus sign.  Use "FM" to
supress padding:

    test=> SELECT length(to_char(12345,'FM00000'));
     length
    --------
          5
    (1 row)


--
  Bruce Momjian  <bruce@momjian.us>          http://momjian.us
  EnterpriseDB                               http://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +