2016-12-27 5 views
0

ich ein Problem habe, dass ich ziemlich sicher bin, ist nicht eindeutigPLSQL Format Nummer für die Anzeige wtihout dezimal Begrenzung

ich eine Datenbankspalte, die Werte wie folgt

Col 
.42 
1.2 
5 
2.222212 

Jetzt ist dieses Ich anhängt hat Spalte, die an die Front-End-Anwendung gesendet werden soll und diese formatieren muss. Aber ich sollte auch keine Dezimalwerte verlieren.

Also, was ich an die Front-End-Anwendung senden möchte, wäre wie

0.42 
1.2 
5.0 
2.222212 

Grundsätzlich ich nicht jede Dezimalstelle verlieren möchten. Aber keine abschließenden Nullen sollten mehr als 1 hinzugefügt werden. Ebenso sollte eine 0 vor einem Dezimalwert angehängt werden, der mit '.' (zB: .42) Aber nicht mehr als 1 führende 0 sollte angehängt werden.

Ich breche jetzt meinen Kopf auf. Jede Hilfe würde sehr geschätzt werden.

Danke

Antwort

2

Vielleicht so etwas? Die Tasten sind die 0-Marker (wenn dort keine Ziffer vorhanden wäre, geben Sie eine 0 ein) und die FM (außer der angezeigten Zahl), dh die Einerstelle, der Dezimalpunkt und die Zehntelstelle, machen den Ausgang so schmal wie möglich).

Dies setzt voraus, dass die Eingaben im NUMBER-Datentyp sind und die gewünschte Ausgabe die Zeichenfolge (VARCHAR2) ist. Wenn die Eingaben auch Zeichenfolgen sind, wrap sie innerhalb to_number().

with 
    test_data (col) as (
     select .42  from dual union all 
     select 1.2  from dual union all 
     select 5  from dual union all 
     select 2.222212 from dual 
    ) 
-- end of test data; the SQL query is the one line below 
select col, to_char(col, 'FM99999990.0999999999') as str from test_data; 

    COL STR 
-------- -------- 
    0.42 0.42 
    1.2 1.2 
     5 5.0 
2.222212 2.222212 
+0

es funktionierte wie eine Schönheit. Danke für die Erklärung. Das hat die Lösung noch besser gemacht. –

+0

Sehr geschätzt! –