2017-02-15 2 views

Antwort

0

ROUND (numeric_expression, Länge [, function])

SELECT ROUND(123.9994, 3), ROUND(123.9995, 3); 

Output:

123,9990 124,0000

0

Statt round() verwenden to_char() oder cast() in eine Dezimalzahl Typ:

select to_char(val, '999.9999'), 
     cast(val as decimal(10, 4)) 
0

Sie proba Bly will to_char mit required format verwenden:

unter dem Wert auf 4 Dezimalstellen und Formate in die gewünschten Zeichenfolge Runden:

Select to_char(123.50000065, '999999999990D9999') x from dual; 

Wenn Sie nicht wollen, um die Zahl tatsächlich dh Sie nur wollen gestutzt nach 4 Ziffern verwenden:

Select to_char(trunc(123.50000065, 4), '999999999990D9999') x from dual; 
0

um das Format steuern eine Reihe zeigte ist, können Sie es in eine Zeichenfolge kann durch das richtige Format Maske.

Je nachdem, wie Sie rund um Ihren Eingabewert benötigen, eine davon könnte nützlich sein:

with test(x) as (
    select 123.50000065 from dual union all 
    select 123.00004 from dual union all 
    select 123.00005 from dual union all 
    select 123.00008 from dual 
) 
select x, 
     to_char(x, 'FM99999999.0000'), 
     to_char(trunc(x, 4), 'FM99999999.0000') 
from test ; 

Ergebnis:

      X TO_CHAR(X,'FM9 TO_CHAR(TRUNC(
-------------------------- -------------- -------------- 
      123,50000065000 123.5000  123.5000 
      123,00004000000 123.0000  123.0000 
      123,00005000000 123.0001  123.0000 
      123,00008000000 123.0001  123.0000 
0

"Rounding" ist ein mathematisches Konzept. Der Wert (mit Ihrer Beispieleingabe) ist 123,5. Mathematisch ist 123.5000 dasselbe wie 123.5. Sie sind nur als STRINGS verschieden.

Eine Möglichkeit, 123.5 als 123.5000 anzuzeigen, besteht darin, round() in to_char() zu verpacken. Dies bedeutet jedoch, dass Sie es nicht für weitere Berechnungen verwenden können (Oracle wird Ihnen tatsächlich erlauben, eine implizite Konvertierung zurück in die Zahl durchzuführen, anstatt einen Datentyp-Mismatch-Fehler auszulösen, wie es sollte tun).

Der bessere Weg, in den meisten Fällen, ist die Formatierung in Ihrem Client Software, wie SQL Developer, SQL * Plus oder Toad. Hier ist, wie Sie es in SQL * Plus-tun können:

SQL> Select round (123.50000065 , 4) as result from dual; 

    RESULT 
---------- 
    123.5 

-- change the format of the numeric column "result" 

SQL> column result format 999.0000 

SQL> Select round (123.50000065 , 4) as result from dual; 

    RESULT 
--------- 
123.5000 
0

Ich kann nicht sehen, wie Sie 123.5 aus Ihrer Anfrage bekommen. meine Ergebnisse 123.50000000

Wenn ich richtig verstehe, möchten Sie Ihre Nummer 4 signifikante Nachkommastellen. warum nicht versuchen, cast

select cast(123.50000065 as numeric(38,4)) 

Ausgang: 123.5000

Prüfung, ob es abrundet Nummer:

select cast(123.50000065 as numeric(38,6))

Ausgabe: 123.500001

Verwandte Themen