Ich habe eine Spalte mit einer Reihe von Zahlen.
row1: 3.4
row2: 4.00
row3: 5.23
row4: 2.0
row5: 0.00
row6: 000
Ich möchte das Endergebnis sein
row1: 3.4
row2: 4
row3: 5.23
row4: 2
row5: 0
row6: 0
Ich möchte grundsätzlich Dezimalstellen entfernen, wenn es sich um eine ganze Zahl oder 0 handelt.
Eine einfache Methode, vorausgesetzt, sie stellen alle gültige Zahlen dar, besteht darin, sie von Zeichenfolgen in Zahlen und wieder zurück umzuwandeln:
with t (id, str) as (
select 1, '3.4' from dual
union all select 2, '4.00' from dual
union all select 3, '5.23' from dual
union all select 4, '2.0' from dual
union all select 5, '0.00' from dual
union all select 6, '000' from dual
)
select id, str, to_char(to_number(str)) as result
from t;
ID STR RESULT
---------- ---- ----------------------------------------
1 3.4 3.4
2 4.00 4
3 5.23 5.23
4 2.0 2
5 0.00 0
6 000 0
Das zeigt einen Anfangswert von 0.1
als gerecht .1
; Wenn Sie in diesem Fall die führende Null beibehalten möchten, können Sie Folgendes verwenden:
rtrim(to_char(to_number(str), 'FM999999990.99999'), '.')
Bereitstellung einer Formatmaske mit genügend führenden und nachfolgenden 9
Platzhaltern für Ihre Daten:
with t (id, str) as (
select 1, '3.4' from dual
union all select 2, '4.00' from dual
union all select 3, '5.23' from dual
union all select 4, '2.0' from dual
union all select 5, '0.00' from dual
union all select 6, '000' from dual
union all select 7, '01' from dual
union all select 8, '00.10' from dual
)
select id, str, rtrim(to_char(to_number(str), 'FM999999990.99999'), '.') as result
from t;
ID STR RESULT
---------- ----- ----------------
1 3.4 3.4
2 4.00 4
3 5.23 5.23
4 2.0 2
5 0.00 0
6 000 0
7 01 1
8 00.10 0.1
Eine andere Möglichkeit besteht darin, einfach in eine Zahl in Ihrer Abfrage zu konvertieren und den Client oder was auch immer dies verbraucht, entscheiden zu lassen, wie sie formatiert werden soll.
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen