2009-04-28 22 views
9

Ich arbeite an einer Abfrage, die numerische Werte (Währung) zurückgibt. Einige der Werte sind ganze Zahlen und werden als 3, 5, 2 usw. angezeigt, während andere Zahlen wie 2.52, 4.50 etc. kommen.Zeige immer Dezimalstellen in SQL?

Wie kann ich Orakel zwingen, immer die Nachkommastellen anzuzeigen?

Dank

Antwort

5

Die Anzeige und Formatierung der Daten sollte bei der Präsentationsschicht behandelt werden - nicht die Daten.

Verwenden Sie die von Ihrem Frontend bereitgestellten Funktionen, um die Werte nach Ihren Wünschen zu formatieren.

+1

Was ist, wenn Oracle * die Präsentationsschicht ist? z.B. das MODPLSQL-Toolkit? – cagcowboy

+0

oder ein einfacher Bericht in SQL * Plus? – cagcowboy

+0

war nicht wirklich klar aus der Frage :-). –

0

In SQL * Plus können Sie die Spalten Direktive verwenden Formatierung auf einer Pro-Spalte-Basis angeben, getrennt von der Abfrage selbst. Auf diese Weise behalten Sie Ihre Anfrage für andere Zwecke "sauber" und erhalten trotzdem Ihre Formatierung. (In SQL * Plus mindestens ...)

beispiel

COLUMN SAL FORMAT 99,990.99 

Google für "SQL * Plus-Benutzerhandbuch und Referenz" und Sie sollen für Ihre Oracle-Version Links auf den Oracle-Standort erhalten. 10.1 ist here wenn das geht. Sie werden wahrscheinlich alle ungefähr gleich sein, wohlgemerkt: Ich glaube nicht, dass sich SQL * Plus stark verändert hat, seit ich 1988 auf Oracle 5.1.17 gelernt habe ...

1

Die to_char behebt das Dezimal-Problem aber Sie über die Länge sicher sein. Wenn es länger ist als das angegebene Format, wird die Nummer als #### angezeigt. Wenn die Nummer kürzer ist, werden Leerzeichen vor der Nummer angezeigt. z

to_char(123.45),'99.00')####

und

to_char(123.45),'999999.00') zeigen ' 123.45' zeigen.

Wenn Sie also die Ergebnisse in CSV oder Excel exportieren müssen, werden diese Zahlen als String behandelt.

Also habe ich keine Lösung gefunden.

+0

Die Verwendung der 'fm'-Anweisung zu Beginn der Formatierung entfernt die zusätzlichen Leerzeichen. – CJC

+0

Die Lösung wurde unten aufgeführt: TO_CHAR (Ihr_Wert,'fm990.00 '), erzwingt 2 Dezimalstellen und lässt führende Leerzeichen weg – OverMars

5

die Antworten schon gegeben zu verbessern, können Sie:

  • TO_CHAR(your_value,'fm999.99') führende Leerzeichen

    ____3.45 wird 3.45 (_ zeigt Leerzeichen)

  • TO_CHAR(your_value,'fm990.99') verhindern Werte weniger Kraft als 1, um eine führende Null zu zeigen

    .52 wird 0.52

  • TO_CHAR(your_value,'fm990.00') 2 Dezimalstellen zu zwingen, selbst wenn 0

    6.36.30

  • (TO_CHAR(your_value,'fm990.00')||'%') wird ein Prozentzeichen

    18.6 wird 18.60%

  • hinzufügen

Quelle: https://community.oracle.com/thread/968373?start=0&tstart=0

Verwandte Themen