Verwenden Sie die FM
format model modifier, um zu schließen, wie Sie die abschließenden Nullen nach dem Dezimaltrennzeichen nicht erhalten werden; aber Sie werden immer noch den Separator selbst erhalten, z.B. 50.
. Sie können rtrim
verwenden, dass loszuwerden:
select to_char(a, '99D90'),
to_char(a, '90D90'),
to_char(a, 'FM90D99'),
rtrim(to_char(a, 'FM90D99'), to_char(0, 'D'))
from (
select 50 a from dual
union all select 50.57 from dual
union all select 5.57 from dual
union all select 0.35 from dual
union all select 0.4 from dual
)
order by a;
TO_CHA TO_CHA TO_CHA RTRIM(
------ ------ ------ ------
.35 0.35 0.35 0.35
.40 0.40 0.4 0.4
5.57 5.57 5.57 5.57
50.00 50.00 50. 50
50.57 50.57 50.57 50.57
Bitte beachte, dass ich to_char(0, 'D')
bin mit dem Charakter zu erzeugen, zu trimmen das Dezimaltrennzeichen passen - so sieht es für den gleichen Charakter, ,
oder .
, wie die erste to_char
fügt hinzu.
Der leichte Nachteil ist, dass Sie die Ausrichtung verlieren. Wenn dies an anderer Stelle verwendet wird, es keine Rolle, vielleicht, aber es funktioniert, dann können Sie auch wickeln Sie es in einem lpad
, die es ein wenig kompliziert aussehen zu lassen beginnt:
...
lpad(rtrim(to_char(a, 'FM90D99'), to_char(0, 'D')), 6)
...
TO_CHA TO_CHA TO_CHA RTRIM(LPAD(RTRIM(TO_CHAR(A,'FM
------ ------ ------ ------ ------------------------
.35 0.35 0.35 0.35 0.35
.40 0.40 0.4 0.4 0.4
5.57 5.57 5.57 5.57 5.57
50.00 50.00 50. 50 50
50.57 50.57 50.57 50.57 50.57
Sie können '90D99', aber das würde Mache deinen zweiten Wert als "0,4" und nicht als "0,40". Ich bin nicht sicher, dass Sie ein Modell haben können, das sowohl "0,40" als auch "50" erlaubt. –
90D99 gibt mir gleich 0,40. 0,40 war mein Fehler ... ich brauche 0,4 o. – BeHunter