Announcement

Collapse
No announcement yet.

Formatierung von Zahlen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Formatierung von Zahlen

    Hallo zusammen,

    ich möchte gerne Zahlen in Oracle formatieren.
    Ich mache die im Moment mit

    Round(wert,2) bzw Trunc(wert,2)

    Wenn ich jedoch eine sehr große Zahl erhalte, bekomme ich dann z.B. 1,234245E7

    Ich möchte dabei die Zahlen nicht in String konvertieren, so dass ich sagen könnte To_Char(wert, '999.999.999,99').

    Hat jemand ein Tipp?

    Gruss

  • #2
    Hi,

    eine Zahl die Du darstellst wird immer vorher zu einem String konvertiert. Intern wird eine NUMBER als Exponent und Mantisse abgespeichert, das ist für die meisten nicht so ganz einfach zu lesen
    Um die Ausgabe selbst steuern, steht, wie Du schon geschrieben hast, to_char zur Verfügung.

    Dim
    Zitat Tom Kyte:
    I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

    Comment


    • #3
      Falls es nur darum geht die Exponent-Schreibweise zu vermeiden könnte die Formatierung mit 'TM' (text minimum number) helfen, z.B:
      Code:
      SELECT TO_CHAR ( (1E+20 / 7), 'TM') zahl FROM dual;
      
      ZAHL                                                            
      ----------------------------------------------------------------
      14285714285714285714,28571428571428571429

      Comment


      • #4
        Ok, danke Dir.

        Comment


        • #5
          Hallo,

          ich habe noch mal eine kleine Frage.
          Hintergrund meiner Frage ist, dass als Resultat die erzeugten Werte in Excel gespeichert werden sollen.
          Ich habe nun mit TO_CHAR(wert, 'TM') zwar das gewünschte Format erhalten, die Felder sind natürlich jetzt als String definiert, jedoch brauche ich die Werte als Double.
          Ich habe den String wieder in Number konvertiert TO_NUMBER(TO_CHAR(wert, 'TM'), '999999.99') . Jedoch wird mir dabei die Nachkommastelle nicht mehr ausgegeben.
          Könnte ich das Problem anders lösen?

          Gruss

          Comment


          • #6
            Ich habe zwar jetzt durch TO_NUMBER(TO_CHAR(wert, 'TM')) wieder eine Zahl mit Nachkommastelle aber die Exponenten sind wieder da. Da hätte ich das Casten sparen können.
            Zuletzt editiert von 1Frage; 16.07.2010, 12:45.

            Comment


            • #7
              Versuch mal Folgendes:

              Code:
              select to_char(123456789.125477,'fm999G999G999D00') from dual
              das ergibt dann:

              Code:
              123.456.789,13
              Für die Zahlen-Formatierung kannst Du wie im obigen Beispiel "G" für die tausender-Punktierung verwenden und "D" für den Dezimaltrenner (Nachkomma-Stellen).
              Beachte, dass die Nachkommastellen dann kaufmännisch gerundet werden.
              Die "00" an Schluss bedeuten, dass auch im Falle ganzzahliger Ergebnisse die beiden nachkommastellen mit ",00" ausgegeben werden.
              Das ist besonders bei Währungsbeträgen sinvoll.
              (Also 25,00 statt nur 25).
              Ist das nicht gewollt, einfach "99" statt "00" verwenden.

              Grüße,
              Kamoquai
              Zuletzt editiert von kamoquai; 27.07.2010, 10:29. Reason: Tippfehler korrigiert

              Comment

              Working...
              X