On Mon, Feb 24, 2003 at 08:16:07PM +0100, Peter Eisentraut wrote:
> Karel Zak writes:
>
> > Peter found bug in the to_char() routine for PL/MI options. This
> > patch fix it -- but this patch doesn't contains tests or docs fixes. I
> > will send it later.
>
> I think there is still a problem with PL. It puts the '+' in aligned
> position and '-' anchored to the number. Is that correct? If PL were to
Yes, it's correct. The MI/PL/SG is PostgreSQL extension, the Oracle
knows very limited version of MI only -- it means we can implement it
by our idea.
> behave like the converse of MI and like it is documented, it would put a
> '+' in aligned position and never put a '-' anywhere. Also, due to this
> apparent problem, PL creates extra whitespace in front of the number.
PL shows '+' or ' ' on wanted position and not disable '-' beacuse
the negative number without '-' is other number. I think disable '-'
for PL will produce mazy outputs (there is not problem implement it,
but I don't think it's good idea, if you need something like this you
can use abs() or define format that handle '-').
The anchored '-' is disabled only if output format contains other option which
handle '-' (like S/SG/MI).
The extra space for PL is for anchored '-', if format option contains MI or SG
this space is not used.
select to_char(x, 'PL9999.999') as pl, to_char(x, 'PLMI9999.999') as plmi from num;
pl | plmi
------------+------------
+ 123.000 | + 123.000
-123.000 | - 123.000
-1231.000 | -1231.000
+ 1231.000 | + 1231.000
+ 1.900 | + 1.900
-1.900 | - 1.900
-.900 | - .900
+ .900 | + .900
+ .945 | + .945
-.945 | - .945
-150.945 | - 150.945
+ 150.945 | + 150.945
in the 'pl' column is '-' angored to number because is there no other way
how show it.
test=# select to_char(x, '"Number:"PL9999.999MI') as pl from num;
pl
-------------------
Number:+ 123.000
Number: 123.000-
Number: 1231.000-
Number:+1231.000
Number:+ 1.900
Number: 1.900-
Number: .900-
Number:+ .900
Number:+ .945
Number: .945-
Number: 150.945-
Number:+ 150.945
there is not extra space beacuse MI is used.
Karel
--
Karel Zak <zakkr@zf.jcu.cz>
http://home.zf.jcu.cz/~zakkr/