Announcement

Collapse
No announcement yet.

Dezimalzahlen, 0 wird vor dem Komma nicht angezeigt

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

  • Dezimalzahlen, 0 wird vor dem Komma nicht angezeigt

    Moin Moin,

    in meiner Tabelle habe ich eine Spalte mit Dezimalzahlen.
    Diese Dezimalzahlen werden mir aber nicht immer korreckt angezeigt.

    Alle Zahlen in der Spalte haben maximal 2 Nachkommastellen.
    Die Vorkommastellen werden auch ganz normal angezeigt, solange dort nicht eine "0" steht.
    Nun also meine Frage: Welches SQL - Statement kann ich verwenden, damit mir diese "0" auch angezeigt wird?

    Hier nochmal ein Beispiel, dass das Problem verdeutlichen soll:

    Im Moment steht in der Spalte die Zahl: ,25
    Sie soll aber so aussehen: 0,25

    Hat da jemand eine gute Idee?
    Vielen Dank schonmal im voraus

  • #2
    Originally posted by Pille View Post

    Im Moment steht in der Spalte die Zahl: ,25
    Sie soll aber so aussehen: 0,25

    Hat da jemand eine gute Idee?
    Vielen Dank schonmal im voraus
    Hallo,

    Dies sollte so funktionieren :

    Code:
    SELECT TO_CHAR (0.23, '90.99') FROM DUAL
    Doku :

    http://download.oracle.com/docs/cd/E...004.htm#i34570



    Gruss

    Comment


    • #3
      Hallo,

      in sqlplus kannst Du Spalten formatieren. Bsp.

      col zahl format 0.99

      SQL> select 0.5 zahl from dual;

      ZAHL
      -----
      0.50


      Gruß,
      Uschi

      Comment


      • #4
        Danke für die schnellen Antworten,

        @ dbwizard: du warst wohl schon auf dem richtigen Weg, allerdings ist mein Problem damit leider noch nicht behoben.

        Mein DATA_TYPE der Spalte (ich nenne Sie KODE) ist VARCHAR2(10 BYTE)

        im Moment sieht sie wie folgt aus:

        KODE
        1,3
        1,4
        3,7
        6,15
        7,15
        ,25
        ,35
        ,38
        ,5
        ,75
        0
        1
        1,25
        1,5
        1,75
        10
        100
        1083

        Nach deinem Select-Statement, welches ich natürlich auch meine Verhältnisse angepasst habe sieht es nun wie folgt aus:

        SELECT TO_CHAR (Kode, '90,99') AS Kode
        FROM ART_SCHUTZSTREIFEN;

        KODE
        0,01
        0,01
        0,04
        0,06
        0,07
        0,00
        0,00
        0,00
        0,01
        0,01
        0,00
        0,01
        0,01
        0,02
        0,02
        0,10
        1,00
        10,83

        Die Dezimalzahlen sind, wie du siehst, nun unterschiedlich, was leider nicht der Lösung entspricht.
        Hättest du eventuell noch eine zweite Idee?
        Vielen Dank

        @ Uschi: Ich benutze leider kein sqlplus. Ich habe es auch nicht geschafft, mit deinem SQL-Statement zurecht zu kommen. Hier wäre eine kleine Hilfestellung sehr nett
        Dankeschön

        Gruß
        Pille

        Comment


        • #5
          Originally posted by Pille View Post
          Danke für die schnellen Antworten,

          @ dbwizard: du warst wohl schon auf dem richtigen Weg, allerdings ist mein Problem damit leider noch nicht behoben.

          Mein DATA_TYPE der Spalte (ich nenne Sie KODE) ist VARCHAR2(10 BYTE)
          Hallo,

          Tut mir Leid, das war ein Missverständnis...wie ich erst jetzt sehe

          Du hast einen *Bug* in deiner Applikation...du speicherst Zahlenwerte als Varchar...Warum tut jemand so etwas ???

          - Ich würde den Spaltentyp ändern zu NUMBER, wenn immer dies möglich ist
          - Anschliessend funktionieren die TO_CHAR Number Formateinstellungen auch wie gewünscht


          Zahlen als Varchar = No Go.


          Gruss

          Comment


          • #6
            Hallo,

            das ist eine gute Frage, warum jemand sowas tut. Die Datenbank wurde leider nicht von mir/uns erstellt.

            Dein Vorschlag würde höchstwahrscheinlich funktionieren, allerdiungs weiß ich nicht, wie sich das auf andere Tabellen auswirken könnte.

            Ich habe jetzt eine andere Lösung gefunden:

            select replace(bezeichnung,',','0,')
            from art_schutzstreifen
            where instr(bezeichnung,',')=1;

            --> Dadurch werden nur die Datensätze angefasst, bei welchen das Problem konkret besteht. Durch den replace - Befehl kann dies nun geändert werden.

            Mit den entsprechenden Update-Befehl, lässt sich das auch in der Datenbank ändern.

            Vielen Dank für die Antworten

            Comment


            • #7
              Originally posted by Pille View Post
              Hallo,

              ...

              Mit den entsprechenden Update-Befehl, lässt sich das auch in der Datenbank ändern.

              Vielen Dank für die Antworten
              Ja, aber du wirst immer wieder in Problem laufen, abgesehen davon das du deine "Zahlen" weder vernünftig sortieren noch damit rechnen kannst.


              Gruss

              Comment

              Working...
              X