Re: Why length(to_char(1::integer, '9')) = 2 ?

From: Dmitriy Igrishin <dmitigr(at)gmail(dot)com>
To: Adrian Klaver <adrian(dot)klaver(at)gmail(dot)com>
Cc: pgsql-general(at)postgresql(dot)org, Sim Zacks <sim(at)compulab(dot)co(dot)il>
Subject: Re: Why length(to_char(1::integer, '9')) = 2 ?
Date: 2011-03-09 18:22:54
Message-ID: AANLkTi=6tmKreabTW81YYrXcHtBBU=n6+La33uf7-gWq@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

2011/3/9 Adrian Klaver <adrian(dot)klaver(at)gmail(dot)com>

> On 03/09/2011 09:59 AM, Dmitriy Igrishin wrote:
>
>>
>>
>> 2011/3/9 Adrian Klaver <adrian(dot)klaver(at)gmail(dot)com
>> <mailto:adrian(dot)klaver(at)gmail(dot)com>>
>>
>>
>> On Wednesday, March 09, 2011 5:34:41 am Dmitriy Igrishin wrote:
>>
>> >
>> > But I am missing something or there is a documentation inaccuracy:
>> >
>>
>> http://www.postgresql.org/docs/9.0/static/functions-formatting.html#FUNCTIO
>> > NS-FORMATTING-NUMERICMOD-TABLEsays: fill mode (suppress padding
>> blanks and
>> > zeroes)
>> >
>> > Test:
>> > dmitigr=> select to_char(12,'FM0009');
>> > to_char
>> > ---------
>> > 0012
>> >
>> > dmitigr=> select length(to_char(12,'FM0009'));
>> > length
>> > --------
>> > 4
>> >
>> > So, FM suppresses only padding blanks not zeroes...
>> >
>> > Any comments?
>> >
>>
>> test(5432)aklaver=>select to_char(12,'9999');
>> to_char
>> ---------
>> 12
>>
>> test(5432)aklaver=>select to_char(12,'FM9999');
>> to_char
>> ---------
>> 12
>>
>> It is a little confusing, but you asked for the 0 in your
>> specification so they
>> are not considered padding.
>>
>> Look at the examples in the table listed below to get an idea of
>> what I am
>> talking about.
>> http://www.postgresql.org/docs/9.0/static/functions-formatting.html
>> Table 9-25
>>
>> Yes, I see, thanks!
>>
>> I just talking about phrase "fill mode (suppress padding blanks and
>> zeroes)"
>> in the documentation should be rephrased to "fill mode (suppress padding
>> blanks)".
>>
>
> To get technical it means suppress unspecified padding O's. See below for
> example.
>
>
>
>> Or I misunderstood what is "padding zeroes" without explicitly
>> specification "0" pattern in the format format template...
>>
>
> This combination from the example table shows that:
>
> to_char(-0.1, 'FM9.99') '-.1'
> to_char(0.1, '0.9') ' 0.1'
>
> The 0 in 0.1 is not strictly needed, so if you use FM it will be
> suppressed.
>
Ahh, I guess I understand (thanks to you examples).
Lets look at the test:

dmitigr=> SELECT '>'||to_char(-0.1, 'FM9.99')||'<' AS v;
v
-------
>-.1<

dmitigr=> SELECT '>'||to_char(0.1, '0.9')||'<' AS v;
v
--------
> 0.1<

dmitigr=> SELECT '>'||to_char(0.1, 'FM0.9')||'<' AS v;
v
-------
>0.1<

dmitigr=> SELECT '>'||to_char(0.1, '0.99999')||'<' AS v;
v
------------
> 0.10000<

dmitigr=> SELECT '>'||to_char(0.1, 'FM0.99999')||'<' AS v;
v
-------
>0.1<

So, padding zeroes suppressed by FM is a rest of the value.

Thank you very much!

>
>
>
>>
>>
>> --
>> Adrian Klaver
>> adrian(dot)klaver(at)gmail(dot)com <mailto:adrian(dot)klaver(at)gmail(dot)com>
>>
>>
>>
>>
>> --
>> // Dmitriy.
>>
>>
>>
>
> --
> Adrian Klaver
> adrian(dot)klaver(at)gmail(dot)com
>

--
// Dmitriy.

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Scott Marlowe 2011-03-09 18:26:45 Re: about memory size reported by system.
Previous Message Adrian Klaver 2011-03-09 18:05:34 Re: Why length(to_char(1::integer, '9')) = 2 ?