2017-07-26 4 views
0

Okay, so (sagen) Ich habe eine Nummer wie 7836.721. Ich mag eine Orakel-Abfrage, die mir das folgende Ergebnis geben kann:Runden Sie eine Zahl und behalten Sie Nullen in Orakel

7837.000 

Die Anzahl an jemandes aufzurunden Platz werden soll, und alle Ziffern nach dem Komma zu Nullen erhalten umgewandelt.

Was ich verwendet habe:

select round(7836.721,0) from dual 

, die mir gegeben haben:

7837 

Jede Hilfe würde geschätzt.

Antwort

2

Klingt wie Sie TO_CHAR brauchen ...

SELECT to_char(TRUNC(7836.721), '9999990.000') numbr 
FROM dual; 

NUMBR 
------------ 
    7837.000 

Dies vorausgesetzt, dass Sie für eine beliebige Anzahl nach 3 Dezimalstellen sind, anstatt 7,12-7,00 gehen.


ETA:

Es scheint wie eine sehr seltsame Anforderung, aber hier geht:

WITH sample_data AS (SELECT 123 numbr FROM dual UNION ALL 
        SELECT 123.12 numbr FROM dual UNION ALL 
        SELECT 123.1234 numbr FROM dual UNION ALL 
        SELECT 123.12345 numbr FROM dual UNION ALL 
        SELECT 0.12345 numbr FROM dual UNION ALL 
        SELECT 1.23456789e50 numbr FROM dual UNION ALL 
        SELECT NULL numbr FROM dual UNION ALL 
        SELECT 1.23e-50 numbr FROM dual) 
SELECT numbr, 
     ROUND(numbr) || CASE WHEN numbr != TRUNC(numbr) THEN 
           RPAD('.', LENGTH(numbr -TRUNC(numbr)), '0') END new_numbr 
FROM sample_data; 

    NUMBR NEW_NUMBR 
---------- -------------------------------------------------------------------------------- 
     123 123 
    123.12 123.00 
    123.1234 123.0000 
123.12345 123.00000 
    0.12345 0.00000 
1.23456789 1.23456789E+50 

    1.23E-50 0.000000000000000000000000000000000000000 
+0

Ja, Ihre Abfrage der Trick, aber was ist, wenn ich die Orte, nachdem die Dezimalstellen sind nicht Fixed to 3. – hashir

+0

Ich wäre gespannt, warum Sie in diesem Fall die hinteren 0 nach dem Komma ausgeben wollten. Eine Zahl ist gleich, unabhängig davon, wie viele nachgestellte Nullen hinter dem Dezimalpunkt stehen. Außerdem würden Sie normalerweise erwarten, dass die Ausgabe konsistent ist, wenn Sie ein bestimmtes Format verwenden - d. H. Alle Zahlen werden mit der gleichen Anzahl an Dezimalstellen angezeigt. – Boneist

+0

Ich bekomme deine Neugierde. Die abschließenden Nullen wurden zu Präsentationszwecken in einer Tabelle benötigt. Nun, wenn ich eine andere Anzahl von Ziffern nach dem Komma in einer Spalte habe, wie kann ich das Notwendige auf dynamische Weise erreichen? Gibt es eine Möglichkeit? – hashir

Verwandte Themen