Krull: Zahlen "richtig" sortieren?

0 67

Zahlen "richtig" sortieren?

Krull
  • datenbank
  1. 0
    Ilja
    1. 0
      Krull
  2. 0
    Mia
    1. 0
      Krull
      1. 0
        MudGuard
        1. 0
          Krull
      2. 0
        Mia
        1. 0
          Krull
          1. 0
            MudGuard
            1. 0
              Steel
          2. 0
            Krull
            1. 0
              Steel
              1. 0
                Krull
                1. 0
                  Steel
                  1. 0
                    Krull
                    1. 0
                      Ilja
                      1. 0
                        Krull
                        1. 0
                          Krull
                          1. 0
                            Ilja
                            1. 0
                              Krull
                              1. 0
                                Ilja
                                1. 0
                                  Vinzenz Mai
                                  1. 0

                                    !ACHTUNG ES FUNKTIONIERT! DANKE

                                    Krull
                                    1. 0

                                      Kommen wir nochmal zur sortierung...

                                      Krull
                                      1. 0
                                        Struppi
                                        1. 0
                                          Krull
                                          1. 0
                                            Ilja
                                            1. 0
                                              Krull
                                              1. 0
                                                Krull
                                                1. 0
                                                  Struppi
                                                  1. 0
                                                    Krull
                                                    1. 0
                                                      Struppi
                                                    2. 0
                                                      Ilja
                                                      1. 0
                                                        Krull
                                2. 0
                                  Krull
                                  1. 0
                                    Struppi
                                    1. 0
                                      Krull
                                      1. 0
                                        Struppi
                                        1. 0
                                          Krull
                              2. 0
                                Struppi
                                1. 0
                                  Ilja
                                  1. 0
                                    Struppi
                                    1. 0
                                      Ilja
                                      1. 0
                                        Struppi
                                        1. 0
                                          Ilja
                                          1. 0
                                            Struppi
                                            1. 0
                                              Ilja
                                              1. 0
                                                Struppi
                                                1. 0
                                                  Ilja
                                                  1. 0
                                                    dedlfix
                                                    1. 0
                                                      Ilja
                                                    2. 0
                                                      Struppi
                                                      1. 0
                                                        dedlfix
                                                  2. 0
                                                    Struppi
                                                    1. 0
                                                      Ilja
                                                      1. 0
                                                        Struppi
                        2. 0
                          dedlfix
                          1. 0
                            Krull
                            1. 0
                              dedlfix
                              1. 0
                                Krull
                              2. 0
                                Krull
                                1. 0
                                  dedlfix
                                  1. 0
                                    Krull
            2. 0
              Ilja
        2. 1
          suit
    2. 0
      suit

Hallo, ich bins schonwieder.

Ich habe eine Spalte in meiner Datenbank in der Zahlen mit MAX 2 Kommastellen geschrieben werden.

Typ (mittlerweile): decimal(8,2)

Diese will ich nach dem auslesen in einer Tabelle anzeigen. Ist ja auch kein Problem.

Jetzt soll das ganze aber nach diesem Zahlenwert sortiert werden:

SELECT * FROM [TABELLE] ORDER BY [ZAHLEN] ASC

nun wird der ganze Mist aber folgendermaßen sortiert:

0,00
1,00
1,50
2,15
25,13
3,14
39,75
4,50

Und nicht wie ich es gerne hätte:

0,00
1,00
1,50
2,15
3,14
4,50
25,13
39,75

Ich weiß, dass dieses "Problem" hier schoon einmal behandelt wurde (MySQL) bin aber zu keiner Lösung gekommen.

Wie kann ich das Problem nun lösen?

Server: Microsoft SQL-Server 2008
Sortierung Datenbank: Latin1_General_CI_AS (Von SQL-Server vorgegeben)
Spaltentyp: decimal(5, 2)

MfG

Krull

  1. yo,

    SELECT * FROM [TABELLE] ORDER BY [ZAHLEN] ASC

    Ich weiß, dass dieses "Problem" hier schoon einmal behandelt wurde (MySQL) bin aber zu keiner Lösung gekommen.

    in mysql werden in den versionen 5.0 und kleinerlaut doku der decimal datentyp als string gespeichert. als lösung könnte man den wert in einen anderern datentyp casten.

    da du aber schreibst, dass du MSSQL benutzt, wundert mich dort das verhalten. ich habe das mal mit einer kleinen tabelle in MSSQL 2000 nachegbildet und dort funktioniert die sortierung korrekt.

    Ilja

    1. ^^ siehe Antwort an Mia ^^
      kommt aufs gleiche raus =)

  2. Hallo Krull,

    bist Du Dir ganz sicher, dass der Datentyp jetzt decimal ist?

    Typ (mittlerweile): decimal(8,2)

    Server: Microsoft SQL-Server 2008
    Sortierung Datenbank: Latin1_General_CI_AS (Von SQL-Server vorgegeben)
    Spaltentyp: decimal(5, 2)

    Ich habe es mit MS SQL-Server 2005 probiert und die Sortierung war korrekt bei gleicher Datenbankeinstellung bezüglich der Sortierung.

    0,00
    1,00
    1,50
    2,15
    3,14
    4,50
    25,13
    39,75

    Auch eine Umwandlung von decimal(5,2) zu varchar(100) zu decimal(8,2) hat daran nichts geändert.

    Ich habe keinen SQL-Server 2008 zum Testen zur Verfügung, aber wenn die Sortierung dort wirklich für decimal-Datentypen alphabetisch ist, dann halte ich das für einen Fehler.

    Gruß Mia

    1. bist Du Dir ganz sicher, dass der Datentyp jetzt decimal ist?

      Ja!

      Könnte es daran liegen, dass ich den Datentyp von varchar(MAX) in decimal geändert habe und der Server das bei der Sortierung nicht annimmt?

      In einem anderen Forum hatte jemand das gleiche Problem, aber der hat die Datenbank neu gemacht. Was in meinem Fall, wegen der laufenden Auftragsbearbeitung ein bisschen unmöglich ist.

      1. Hi,

        Könnte es daran liegen, dass ich den Datentyp von varchar(MAX) in decimal geändert habe und der Server das bei der Sortierung nicht annimmt?

        Kann es sein, daß die Typ-Änderung noch nicht durchgeführt wurde, z.B.

        wegen der laufenden Auftragsbearbeitung

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. Hi,

          Kann es sein, daß die Typ-Änderung noch nicht durchgeführt wurde

          möglich

          »» wegen der laufenden Auftragsbearbeitung

          findet in einer anderen Tabelle statt.

          cu

      2. Hallo Krull,

        Könnte es daran liegen, dass ich den Datentyp von varchar(MAX) in decimal geändert habe und der Server das bei der Sortierung nicht annimmt?

        Denkbar ist das schon, ich habe 2 Tests (Server 2005) gemacht:

        1. eine Tabelle angelegt mit decimal(5,2), Zahlen reingeschrieben, umgewandelt in varchar(100), umgewandelt in decimal(8,2) sortiert, alles in Ordnung
        2. eine Tabelle angelegt mit varchar(100), dieselben Zahlen reingeschrieben, umgewandelt in decimal(8,2), es kam eine Fehlermeldung, dass die Umwandlung in Zahlen nicht möglich ist

        Kannst Du nicht eine neue Spalte anfügen, die gleich den richtigen Datentyp hat, die Zahlen dann per Programm dorthin kopieren und die neue Spalte zum sortieren nehmen?

        Gruß Mia

        1. Hallo Mia,

          Kannst Du nicht eine neue Spalte anfügen, die gleich den richtigen Datentyp hat, die Zahlen dann per Programm dorthin kopieren und die neue Spalte zum sortieren nehmen?

          werde ich wohl müssen ... und den rest auch erneuern ... weil alles hin is durch die hin und her konvertierung...

          ich werds versuchen

          1. Hi,

            »» Kannst Du nicht eine neue Spalte anfügen, die gleich den richtigen Datentyp hat, die Zahlen dann per Programm dorthin kopieren und die neue Spalte zum sortieren nehmen?
            werde ich wohl müssen ... und den rest auch erneuern ... weil alles hin is durch die hin und her konvertierung...

            So schlimm kann der Schaden ja nicht sein, Du hast das ja schließlich nicht an einer Produktiv-Tabelle ausprobiert, sondern an einer Test-Tabelle.

            cu,
            Andreas

            --
            Warum nennt sich Andreas hier MudGuard?
            O o ostern ...
            Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
            1. Hi!

              So schlimm kann der Schaden ja nicht sein, Du hast das ja schließlich nicht an einer Produktiv-Tabelle ausprobiert, sondern an einer Test-Tabelle.

              Wenns bei Krull so zugeht, wie bei uns, dann arbeitet er an der livegeschalteten DB an den benutzten Tabellen. Immerhin konnte ich einfuehren, dass  unsere Programme nicht mehr live geschrieben werden, sondern in einem Testordner und erst ins Livesystem kopiert, wenn alles laeuft. Eine TestDB waere allerdings wirklich toll. Dann koennte man immer alles ausser dem Code fuer dei DBanbindung kopieren und muesste nicht an Livedaten spielen um etwas zu testen. Naja. Was man halt so traeumt...

              --
              "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
                    - T. Pratchett
          2. So Tabelle neu gemacht.

            Und wie man sieht, sieht man nichts.

            Habe es jetzt mit numeric und decimal probiert.

            Wenn ich jetzt was in die Tabelle schreiben will (INSERT INTO) sagt er mir:

            Fehler beim Konvertieren des varchar-Datentyps in numeric., SQL state 37000...

            tolle wurst.

            Wieso geht DAS jetzt schonwieder nicht?

            1. Hi!

              Gib doch mal den Query.

              --
              "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
                    - T. Pratchett
              1. Gib doch mal den Query.

                INSERT INTO [wickel_db].[dbo].[data]  
                           ([Fabrikat], [Typ], [Motornummer], [Spannung], [Strom1], [Strom2], [Leistung1], [Leistung2], [Drehzahl1], [Drehzahl2], [Frequenz], [Kaltleiter], [Thermofühler], [Nuten], [Blechpaketdurchmesser], [Blechpaketlänge], [Spulenmaß1], [Spulenmaß2], [Windungen1], [Windungen2], [Drahtdurchmesser1], [Drahtdurchmesser2], [Wickelschritt1], [Wickelschritt2], [Schaltung1], [Schaltung2], [Wickelart], [Kupfergewicht], [Wickelzeit], [Bemerkung], [Gegenstand], [Datum], [Auftragsnummer], [Kunde], [Ort], [Wickler])  
                     VALUES  
                           ('$fabrikat','$typ','$motornummer','$spannung','$strom1','$strom2','$leistung1','$leistung2','$drehzahl1','$drehzahl2','$frequenz','$kaltleiter','$thermofühler','$nuten','$blechpaketdurchmesser','$blechpaketlänge','$spulenmaß1','$spulenmaß2','$windungen1','$windungen2','$drahtdurchmesser1','$drahtdurchmesser2','$wickelschritt1','$wickelschritt2','$schaltung1','$schaltung2','$wickelart','$kupfergewicht','$wickelzeit','$bemerkung','$gegenstand','$datum','$auftragsnummer','$kunde','$ort','$wickler')";  
                
                

                Die betreffenden Spalten:

                Leistung1 und Leistung2

                1. Hi!

                  Eigentlich meinte ich den Query, wie die DB ihn bekommt. sowas wie: insert into data (Fabrikat, Leistung1) values ('Fabrikat1', '1,5')

                  Die betreffenden Spalten:

                  Leistung1 und Leistung2

                  Und jetzt waeren halt noch die Inhalte der Variablen, der entsprechenden Spalten gut. (natuerlich nur fuer einen Datensatz)

                  Aber vielleicht klappts auch so schon, wenn Du die Spalten nicht als String uebergibst, sondern als Zahl, die sie ja sein sollen. Also:
                  '$strom2', $leistung1, $leistung2

                  insert into data (Fabrikat, Leistung1) values ('Fabrikat1', 1.5)

                  (siehst Du die 2 kleinen, aber wichtigen, Unterschiede zum ersten Query?)

                  --
                  "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
                        - T. Pratchett
                  1. Hi!

                    Und jetzt waeren halt noch die Inhalte der Variablen, der entsprechenden Spalten gut.

                    Mal ein Beispiel:

                    ([Fabrikat], [Typ], [Motornummer], [Spannung], [Strom1], [Strom2], [Leistung1], [Leistung2], [Drehzahl1], [Drehzahl2], [Frequenz], [Kaltleiter], [Thermofühler], [Nuten], [Blechpaketdurchmesser], [Blechpaketlänge], [Spulenmaß1], [Spulenmaß2], [Windungen1], [Windungen2], [Drahtdurchmesser1], [Drahtdurchmesser2], [Wickelschritt1], [Wickelschritt2], [Schaltung1], [Schaltung2], [Wickelart], [Kupfergewicht], [Wickelzeit], [Bemerkung], [Gegenstand], [Datum], [Auftragsnummer], [Kunde], [Ort], [Wickler])  
                    VALUES  
                    ('Abus','S10559','D575945009','400','0,55','','0,09','0,37', '620','2800','50','','','24','70','67','285 K0','390 K4','265','94','0,224','0,425','1-4','1-10/12','Serie Stern','Serie Stern','zwei getrennte Wicklungen','1','7,5','8polig zuersteinlegen,...','D-Stator','25.02.2009','0313','Zensiert','Hannover','Zensiert')";  
                    
                    

                    Aber vielleicht klappts auch so schon, wenn Du die Spalten nicht als String uebergibst, sondern als Zahl, die sie ja sein sollen. Also:

                    '$strom2', $leistung1, $leistung2

                    Wenn ich das so^^ habe sagt er mir falsche Syntax in der nähe von ,

                    (siehst Du die 2 kleinen, aber wichtigen, Unterschiede zum ersten Query?)

                    jetzt verstehe ich auch endlich mal wo der Unterschied zwischen Strings und anderen Dingsis ist.

                    Es geht hauptsächlich um Leistun1 und Leistung2 ... weil ich die dann decimal sortieren will... "Richtig nach Zahlen"

                    1. yo,

                      Es geht hauptsächlich um Leistun1 und Leistung2 ... weil ich die dann decimal sortieren will... "Richtig nach Zahlen"

                      was du machen willst, einen datensatz in eine tabelle einfügen ist sehr trivial. du machst es aber komplizierter, weil du nicht blosses sql hier angibst, sondern variablen ins spiel kommen, dessen inhalt wir nicht wissen können. das ist zur fehlersuche sehr schlecht.

                      mein tipp, mach mal ein insert nur mit den relevanten daten, also spalten, die aufgrund von NOT NULL constraints gefüllt werden müssen und eben deinen spalten, die du als decimal neu hinzugefügt hast. dazu gibst du dem befehl direkt in sql an, ohne über irgendeine andere programmiersprache zu gehen. und du achtest darauf, dass du einen "." als trenner bei den decimalwerten angibtst.

                      sollte das dann immer noch nicht klappen, dann postest du hier die exakte sql anweisung und zwar nur die sql anweisung mit der entsprechenden fehlermeldung.

                      Ilja

                      1. mein tipp, mach mal ein insert nur mit den relevanten daten, also spalten, die aufgrund von NOT NULL constraints gefüllt werden müssen und eben deinen spalten, die du als decimal neu hinzugefügt hast. dazu gibst du dem befehl direkt in sql an, ohne über irgendeine andere programmiersprache zu gehen. und du achtest darauf, dass du einen "." als trenner bei den decimalwerten angibtst.

                        alles klar mache ich mal.

                        Im Script wir dann aber ein "," eingegeben und es soll auch ein "," Ausgegeben werden ... Nur als Info.

                        Kannst mir ja schonmal bitte was in PHP fertig machen das den Punkt dann in ein Komma umwandelt. Dafür hab ich nämlich keine Zeit mehr!

                        MfG

                        1.   
                          INSERT INTO [wickel_db].[dbo].[data]  
                                     ([Auftragsnummer]  
                                     ,[Datum]  
                                     ,[Kunde]  
                                     ,[Ort]  
                                     ,[Gegenstand]  
                                     ,[Fabrikat]  
                                     ,[Typ]  
                                     ,[Motornummer]  
                                     ,[Spannung]  
                                     ,[Frequenz]  
                                     ,[Strom1]  
                                     ,[Strom2]  
                                     ,[Leistung1]  
                                     ,[Leistung2]  
                                     ,[Drehzahl1]  
                                     ,[Drehzahl2]  
                                     ,[Kaltleiter]  
                                     ,[Thermofühler]  
                                     ,[Nuten]  
                                     ,[Blechpaketdurchmesser]  
                                     ,[Blechpaketlänge]  
                                     ,[Spulenmaß1]  
                                     ,[Spulenmaß2]  
                                     ,[Windungen1]  
                                     ,[Windungen2]  
                                     ,[Drahtdurchmesser1]  
                                     ,[Drahtdurchmesser2]  
                                     ,[Wickelschritt1]  
                                     ,[Wickelschritt2]  
                                     ,[Schaltung1]  
                                     ,[Schaltung2]  
                                     ,[Wickelart]  
                                     ,[Kupfergewicht]  
                                     ,[Wickelzeit]  
                                     ,[Bemerkung]  
                                     ,[Wickler])  
                               VALUES  
                                     (313, varchar,  
                                     2009-02-25, date,  
                                     Vietz, varchar,  
                                     Hannover, varchar,  
                                     D-Stator, varchar,  
                                     Abus, varchar,  
                                     S10559, varchar,  
                                     D575945009, varchar,  
                                     400, varchar,  
                                     50, varchar,  
                                     1,5, varchar,  
                                     0,9, varchar,  
                                     0.09, decimal(6,2),  
                                     0.37, decimal(6,2),  
                                     620, varchar,  
                                     2800, varchar,  
                                     155, varchar,  
                                     150, varchar,  
                                     24, varchar,  
                                     70, varchar,  
                                     67, varchar,  
                                     285 K0, varchar,  
                                     390 K4, varchar,  
                                     265, varchar,  
                                     94, varchar,  
                                     0,224, varchar,  
                                     0,425, varchar,  
                                     1-4, varchar,  
                                     1-10/12, varchar,  
                                     Serie Stern, varchar,  
                                     Serie Stern, varchar,  
                                     zwei getrennte Wicklungen, varchar,  
                                     1, varchar,  
                                     7,5, varchar,  
                                     8 polig zuerst einlegen, Sternpunkte jeweils mit einer Litze ausführen, varchar,  
                                     Lempert, varchar)  
                          GO  
                          
                          

                          Nach ausmerzen von Zeichenfehlern in den ersten Zeilen kommt:

                          Meldung 195, Ebene 15, Status 10, Zeile 51
                          'decimal' wird nicht als Name einer integrierten Funktion erkannt.

                          1. yo,

                            Meldung 195, Ebene 15, Status 10, Zeile 51
                            'decimal' wird nicht als Name einer integrierten Funktion erkannt.

                            wenn du genauso versuchst einen INSERT zu machen, wundern mich die fehlermeldungen nicht. die problematik liegt bei den werten, also nach dem schlüselwort VALUES. du solltest dort nur die reinen werte angeben, nicht aber noch zusätzlich den datentyp. ausserdem müssen string werte und auch datumswerte in einfache hochkommata eingeschlossen werden.

                            warum du für bestimmte spalten wie drehzahl immer noch VARCHAR datentypen verwendest, ist mir schleierhaft, aber eins nach dem anderen

                            Ilja

                            1.   
                              INSERT INTO [wickel_db].[dbo].[data]  
                                         ([Auftragsnummer]  
                                         ,[Datum]  
                                         ,[Kunde]  
                                         ,[Ort]  
                                         ,[Gegenstand]  
                                         ,[Fabrikat]  
                                         ,[Typ]  
                                         ,[Motornummer]  
                                         ,[Spannung]  
                                         ,[Frequenz]  
                                         ,[Strom1]  
                                         ,[Strom2]  
                                         ,[Leistung1]  
                                         ,[Leistung2]  
                                         ,[Drehzahl1]  
                                         ,[Drehzahl2]  
                                         ,[Kaltleiter]  
                                         ,[Thermofühler]  
                                         ,[Nuten]  
                                         ,[Blechpaketdurchmesser]  
                                         ,[Blechpaketlänge]  
                                         ,[Spulenmaß1]  
                                         ,[Spulenmaß2]  
                                         ,[Windungen1]  
                                         ,[Windungen2]  
                                         ,[Drahtdurchmesser1]  
                                         ,[Drahtdurchmesser2]  
                                         ,[Wickelschritt1]  
                                         ,[Wickelschritt2]  
                                         ,[Schaltung1]  
                                         ,[Schaltung2]  
                                         ,[Wickelart]  
                                         ,[Kupfergewicht]  
                                         ,[Wickelzeit]  
                                         ,[Bemerkung]  
                                         ,[Wickler])  
                                   VALUES  
                                         ('313',  
                                         '25.02.2009',  
                                         'Vietz',  
                                         'Hannover',  
                                         'D-Stator',  
                                         'Abus',  
                                         'S10559',  
                                         'D575945009',  
                                         '400',  
                                         '50',  
                                         '1,5',  
                                         '0,9',  
                                         '0.09',  
                                         '0.37',  
                                         '620',  
                                         '2800',  
                                         '155',  
                                         '150',  
                                         '24',  
                                         '70',  
                                         '67',  
                                         '285 K0',  
                                         '390 K4',  
                                         '265',  
                                         '94',  
                                         '0,224',  
                                         '0,425',  
                                         '1-4',  
                                         '1-10/12',  
                                         'Serie Stern',  
                                         'Serie Stern',  
                                         'zwei getrennte Wicklungen',  
                                         '1',  
                                         '7,5',  
                                         '8 polig zuerst einlegen, Sternpunkte jeweils mit einer Litze ausführen',  
                                         'Lempert')  
                              GO  
                              
                              

                              Funktioniert im SQl Management Studio.

                              Aber das ist ja genau das was ich nicht verstehe. Gebe ich in meinem SCRIPT die Leistung mit "." ein macht er den gleichen Fehler als wenn ich ein "," eingebe. Und der Query is so gesehen genau der gleiche.

                              warum du für bestimmte spalten wie drehzahl immer noch VARCHAR datentypen verwendest, ist mir schleierhaft, aber eins nach dem anderen

                              Brauchen wir nicht weiter drüber diskutieren. Ich will die Datenbank so einfach wie möglich gestaltet haben, da es hier in der Firma immernoch "Nicht-so-schlaue" gibt, die da alles mögliche eingeben aber nicht das was da rein soll! z.B. statt nur einer Zahl (2800) die Wertbezeichnung mit dahinter (2800/min).

                              1. yo,

                                Funktioniert im SQl Management Studio.

                                ist doch schon mal ein ergebnis, wobei du jetzt neben den strings und den datumswerten auch noch die reinen zahlendatentypen mit einfachen hockommata geklammert hast. das kann man machen, würde ich aber nicht tun.

                                Aber das ist ja genau das was ich nicht verstehe. Gebe ich in meinem SCRIPT die Leistung mit "." ein macht er den gleichen Fehler als wenn ich ein "," eingebe. Und der Query is so gesehen genau der gleiche.

                                das ist genau der grund, warum wir erst einmal keine scripte und variablen haben wollen, wenn man auf einen fehler des dbms stößt. man reduziert es zuerst auf den sql code. und erst wenn dieser geht schaut man, wo das problem bei dem script liegt. in deinem falle vermute ich, dass eben die zahlenwerte mit einem komma geschrieben werden. um das zu prüfen, kannst du du die sql anweisung in deinem script mal ausgeben lassen und zwar genau so, wie du sie an das dbms schicken würdest.

                                Brauchen wir nicht weiter drüber diskutieren. Ich will die Datenbank so einfach wie möglich gestaltet haben, da es hier in der Firma immernoch "Nicht-so-schlaue" gibt, die da alles mögliche eingeben aber nicht das was da rein soll! z.B. statt nur einer Zahl (2800) die Wertbezeichnung mit dahinter (2800/min).

                                hmm ok, aber eigentlich ist die richtige wahl der datentypen genau dafür da, dass so was nicht in die datenbank bekommt.

                                Ilja

                                1. Hallo Ilja,

                                  » Ich will die Datenbank so einfach wie möglich gestaltet haben, da es hier in der Firma immernoch "Nicht-so-schlaue" gibt, die da alles mögliche eingeben aber nicht das was da rein soll! z.B. statt nur einer Zahl (2800) die Wertbezeichnung mit dahinter (2800/min).

                                  hmm ok, aber eigentlich ist die richtige wahl der datentypen genau dafür da, dass so was nicht in die datenbank bekommt.

                                  und es hat den angenehmen Nebeneffekt, dass man sich nach Möglichkeit *nicht* mit solchen Problemen herumschlagen muss, d.h. die Datenbank ist einfacher, die Anwendung ist einfacher.

                                  Aber ich befürchte, der gute OP verzichtet - der Einfachheit zuliebe - auf Validierung und Behandlung von Eingaben ;-)

                                  Freundliche Grüße

                                  Vinzenz

                                  1. Hallo an mittlerweile ganz viele Leute.

                                    Es funktioniert auf einmal.

                                    Ich weiß nicht was ich noch geändert haben soll aber jetzt funktioniert es genau so wie es soll.

                                    Ich werde jetzt nochmal schauen ob das mit der Sortierung auch hinhaut, wo ich allerdings von ausgehen.

                                    Vielen Dank schonmal.

                                    MfG

                                    Krull

                                    1. Also die Zahlen die in Leistung1 eingegeben habe sortiert er jetzt folgendermaßen:

                                      0,09
                                      0,78
                                      0,89
                                      1,00
                                      1,50
                                      1,75
                                      12,43
                                      14,66
                                      2,10
                                      2,55
                                      2,86
                                      200,00
                                      22,40
                                      3,49
                                      350,00
                                      36,00

                                      Ich will aber so:

                                      0,09
                                      0,78
                                      0,89
                                      1,00
                                      1,50
                                      1,75
                                      2,10
                                      2,86
                                      3,49
                                      12,34
                                      14,66
                                      22,40
                                      36,00
                                      200,00
                                      350,00

                                      Oben ist doch voll das heillose durcheinander .. da is doch nichts sortiert. ich sehe da keine logische sortierung!

                                      1. Oben ist doch voll das heillose durcheinander .. da is doch nichts sortiert. ich sehe da keine logische sortierung!

                                        Du bist wieder genau dort wo du am Anfang warst. Solange du dich weigerst die Zahlen als Zahlen zu speichern wird es nichts.

                                        Und: doch das ist die logische Sortierung von Zeichenketten (Strings)

                                        Struppi.

                                        1. Du bist wieder genau dort wo du am Anfang warst. Solange du dich weigerst die Zahlen als Zahlen zu speichern wird es nichts.

                                          Alles lesen wäre mal eine idee.

                                          Die für die sortierung relevanten spalten sind als Zahl (decimal) gespeichert.!!!

                                          Und trotzdem sortiert da da nur son mist hin.

                                          1. yo,

                                            Die für die sortierung relevanten spalten sind als Zahl (decimal) gespeichert.!!!

                                            und du bist gabz sicher, dass die spalten vom datentyp decimal sind und du auch nach genau dieser spalte sortierst ? ich denke es wird zeit, dass du uns folgendes zeigst und zwar alles mit einem screenshot und nichts anderes.

                                            1. deine Tabelledefinition
                                            2. 10 Datensätze der Tabelle
                                            3. deine abfrage

                                            Ilja

                                            1. Nee ist schon gut. Mein Fehler.

                                              Jetzt aber noch eine Kleinigkeit.

                                              Wenn ich mit dem SQL-Server-Management-Studio die Tabelle Abfrage (rechtsklick, Oberste 200 Zeilen bearbeiten) gibt er mor vernünftige Werte aus.

                                              0,09
                                              0,87

                                              usw.

                                              Frage ich das jetzt aber mit meinem Script ab gibt er es mir so aus:

                                              .09
                                              .87

                                              usw.

                                              ![Gewünschte Infos](http://roman-bilm.de/gewünschte Infos.JPG)

                                              1. Sorry wegen Bild^^

                                                Infos

                                                1. die Skriptausgabe ist doch richtig sortiert.

                                                  Struppi.

                                                  1. die Skriptausgabe ist doch richtig sortiert.

                                                    ja jetzt!

                                                    aber da fehlt ne "0" (NULL) vor .09!!

                                                    Oder seh nur ich die nich?

                                                    1. » die Skriptausgabe ist doch richtig sortiert.

                                                      ja jetzt!

                                                      aber da fehlt ne "0" (NULL) vor .09!!

                                                      Oder seh nur ich die nich?

                                                      Das ist die übliche Form, wie Zahlen ausgegeben werden. Und hat nicht mit deinem Datenabnksystem zu tun, sondern mit deiner Skriptsprache (php, oder?). In vielen sprachen gibt es einen Befehl Namens printf den du für die Formatierung verwenden kannst.

                                                      Struppi.

                                                    2. yo,

                                                      »» die Skriptausgabe ist doch richtig sortiert.

                                                      ja jetzt!

                                                      nun, du hast dich ja lange erfolgreich dagegen gewehrt. ;-)

                                                      für die "alten hasen" ist die ursache deiner sortierungsprobleme recht schnell klar gewesen. zu 99% liegt es am falschen datentyp, der gewählt wurde und dies hat sich auch in deinem falle bewahrheitet.

                                                      Ilja

                                                      1. Ihr habt ja gewonnen.

                                                        Aber die "0" fehlt immernoch ...

                                                        mache mich aber gerade über printf und kollegen schlau ..

                                                        naja und meine suchfunktion ist auch mehr oder weniger hinfällig ... also kaputt ...

                                                        naja mal sehen

                                                        erstmal Danke an alle.

                                2. wobei du jetzt neben den strings und den datumswerten auch noch die reinen zahlendatentypen mit einfachen hockommata geklammert hast.

                                  Wenn ich das Datum so eingebe: 25.02.2009 muss ich es als String (also mit "'" geklammert) angeben damit er es umwandelt. Geht nicht anders.

                                  Und die Zahlen funktionieren auch ohne "'".

                                  Also das funktioniert soweit alles wie wir sehen. Nun gehts einen Schritt weiter. Oder nicht?

                                  Im SQL-Query im Script hole ich mir die "VALUES" über Variablen. Diese sind in "'" geklammert. Ohne die "'" geht es nicht. Dann sagt er nämlich: Syntaxfehler in der Nähe von ","

                                  Mache ich statt den "'"´s Anführungszeichen (") hin sagt PHP: Parse error in line...  Eigentlich logisch.

                                  Was kann ich jetzt noch probieren. Ich bin mittlerweile mit dem bisschen Latein das ich in der Sache habe am Ende.

                                  1. Im SQL-Query im Script hole ich mir die "VALUES" über Variablen. Diese sind in "'" geklammert. Ohne die "'" geht es nicht. Dann sagt er nämlich: Syntaxfehler in der Nähe von ","

                                    Nur bei "Nichtzahlen".

                                    Was kann ich jetzt noch probieren. Ich bin mittlerweile mit dem bisschen Latein das ich in der Sache habe am Ende.

                                    Zahlen ohne quoting und Strings mit einfachen.

                                    Struppi.

                                    1. Nur bei "Nichtzahlen".

                                      Aber 0.09 ist doch eine Zahl .. oder nicht? Dass 0,09 KEINE Zahl ist habe ich mittlerweile eingesehen. Warum auch immer.

                                      Zahlen ohne quoting und Strings mit einfachen.

                                      HÄÄÄ?

                                      1. » Nur bei "Nichtzahlen".

                                        Aber 0.09 ist doch eine Zahl .. oder nicht?

                                        Ja, aber '0.09' ist keine Zahl.

                                        Dass 0,09 KEINE Zahl ist habe ich mittlerweile eingesehen. Warum auch immer.

                                        » Zahlen ohne quoting und Strings mit einfachen.

                                        HÄÄÄ?

                                        Zahlen:
                                        1
                                        2
                                        3
                                        1.01
                                        1.02
                                        1.03
                                        ==> kein qouting => keine Hochkommas

                                        Strings:
                                        "wort"
                                        "ein Satz"
                                        "1"
                                        "2"

                                        oder
                                        'wort'
                                        'ein Satz'
                                        '1'
                                        '2'
                                        ==> quoting => Hochkommas

                                        Ich finde es aber schon merkwürdig, das jemand mit so geringen programmierkenntnissen, an einer (zumindest scheinbar) so komplexen Sache arbeitet.

                                        Struppi.

                                        1. Ich finde es aber schon merkwürdig, das jemand mit so geringen programmierkenntnissen, an einer (zumindest scheinbar) so komplexen Sache arbeitet.

                                          Man versucht halt sein bestes zu geben. Und mein Meister liest sich auch gerade in SQL und den ganzen schrott rein ... Damit der wenigstens einigermaßen weiß worum es überhaupt geht...

                              2. Ich misch mich mal kurz ein.

                                VALUES
                                           ('313',

                                Das ist ein Zahl

                                '25.02.2009',
                                           'Vietz',
                                           'Hannover',
                                           'D-Stator',
                                           'Abus',
                                           'S10559',
                                           'D575945009',

                                Keine Zahlen.

                                '400',
                                           '50',
                                           '1,5',
                                           '0,9',
                                           '0.09',
                                           '0.37',
                                           '620',
                                           '2800',
                                           '155',
                                           '150',
                                           '24',
                                           '70',
                                           '67',

                                Das ist sind alles Zahlen

                                usw.

                                Aber das ist ja genau das was ich nicht verstehe. Gebe ich in meinem SCRIPT die Leistung mit "." ein macht er den gleichen Fehler als wenn ich ein "," eingebe. Und der Query is so gesehen genau der gleiche.

                                Wer macht den Fehler?
                                Du meinst die Sortierung der DB Ausgabe entspricht nicht deinem Wunsch. Da ändert auch ein Zeichen nichts, du musst einfach die entsprechenden Spalten, die Zahlen darstellen sollen, als Zahlen speichern. Damit bekommst du nicht nur die richtige Sortierung, es ist auch Platzsparender (unter dem Vorbehalt, dass Decimal evtl. intern auch als Zeichenkette abgespeichert wird) und schneller

                                D.h. alle Strings, auch die mit einem Komma, musst du als Zahlen eintragen. wenn du ungültige Eingaben erwartest, musst du dies in deinem Programm prüfen und darauf reagieren, aber nicht in dem du die Datenbank verhunzt, sondern entweder stillschweigend, in dem du Kommas in Punkte umwandelst oder mit einer Fehlermeldung.

                                » warum du für bestimmte spalten wie drehzahl immer noch VARCHAR datentypen verwendest, ist mir schleierhaft, aber eins nach dem anderen

                                Brauchen wir nicht weiter drüber diskutieren. Ich will die Datenbank so einfach wie möglich gestaltet haben, da es hier in der Firma immernoch "Nicht-so-schlaue" gibt, die da alles mögliche eingeben aber nicht das was da rein soll! z.B. statt nur einer Zahl (2800) die Wertbezeichnung mit dahinter (2800/min).

                                Und genau das ist dein Problem. Entweder das Feld ist eine Zahl, dann darfst du auch nur Zahlen zulassen oder es ist keine, dann kannst du die Spalte auch nicht so einfach nach Zahlen sortieren. wenn du die DB so einfach wie möglich gestalten willst, darfst du nur Werte zulassen, die die Spalte darstellen.

                                Struppi.

                                1. yo,

                                  »»      VALUES
                                  »»            ('313',

                                  Das ist ein Zahl

                                  nicht wirklich. nicht alles, was wie eine zahl aussieht muss auch eine zahl sein. ob man etwas als zahl speichert oder nicht hängt von den operationen ab, die man damit macht. und eine auftragsnummer (wie zum beispiel auch PLZ oder Kundennummern) ist mal mit sicherheit ein string, egal ob da nun nur zahlen drinne stehen oder nicht.

                                  Du meinst die Sortierung der DB Ausgabe entspricht nicht deinem Wunsch. Da ändert auch ein Zeichen nichts, du musst einfach die entsprechenden Spalten, die Zahlen darstellen sollen, als Zahlen speichern.

                                  nach langen ringen sind wir bei dem punkt ja schon angekommen, dass er daraus DECIMAL datentypen verwendet, wo er sortieren will. das ist nicht mehr das problem.

                                  Ilja

                                  1. » Du meinst die Sortierung der DB Ausgabe entspricht nicht deinem Wunsch. Da ändert auch ein Zeichen nichts, du musst einfach die entsprechenden Spalten, die Zahlen darstellen sollen, als Zahlen speichern.

                                    nach langen ringen sind wir bei dem punkt ja schon angekommen, dass er daraus DECIMAL datentypen verwendet, wo er sortieren will. das ist nicht mehr das problem.

                                    Nicht? Mir scheint es ist nach wie vor ein Problem. Und wenn ich diese "Zahlen"-folge  sehe:
                                               '400',
                                               '50',
                                               '1,5',
                                               '0,9',
                                               '0.09',
                                               '0.37'

                                    Dann scheint die Umstellung noch nicht geglückt

                                    Struppi.

                                    1. yo,

                                      Nicht? Mir scheint es ist nach wie vor ein Problem. Und wenn ich diese "Zahlen"-folge  sehe:
                                                 '400',
                                                 '50',
                                                 '1,5',
                                                 '0,9',
                                                 '0.09',
                                                 '0.37'

                                      Dann scheint die Umstellung noch nicht geglückt

                                      die beiden letzten werte mit dem Punkt hat er zwar in hochkommata geklammert, die spalten sind aber trotzdem decimal-datentypen. ein paar beiträge weiter oben kannst du es nachlesen, wenn du willst.

                                      Ilja

                                      1. » Dann scheint die Umstellung noch nicht geglückt

                                        die beiden letzten werte mit dem Punkt hat er zwar in hochkommata geklammert, die spalten sind aber trotzdem decimal-datentypen. ein paar beiträge weiter oben kannst du es nachlesen, wenn du willst.

                                        Ich lese weiter oben, dass bei ihm die Zahlen nicht richtig sortiert werden. Wird wohl am dbms liegen, dass decimal nicht richtig sortiert wird.

                                        Deinen Aussagen entnehme ich dass du ihm auch weiterhin empfiehlst die anderen Zahlen als varchar zu speichern. Was ich als keine glückliche Vorgehensweise sehe. Aber jeder wie er möchte.

                                        Struppi.

                                        1. yo,

                                          Ich lese weiter oben, dass bei ihm die Zahlen nicht richtig sortiert werden. Wird wohl am dbms liegen, dass decimal nicht richtig sortiert wird.

                                          nein, es liegt nicht am dbms. und es ging auch nicht mehr darum, ob man DECIMAL benutzt, sondern mehr oder weniger problem bei ihm bei der umsetzung.

                                          Deinen Aussagen entnehme ich dass du ihm auch weiterhin empfiehlst die anderen Zahlen als varchar zu speichern. Was ich als keine glückliche Vorgehensweise sehe. Aber jeder wie er möchte.

                                          nicht grundsätzlich, aber bei rechnungsnummer, genauso wie kundennummer würde ich immer zu VARCHAR datentp anraten, auch wenn nur zahlen vorkommen.

                                          Ilja

                                          1. » Deinen Aussagen entnehme ich dass du ihm auch weiterhin empfiehlst die anderen Zahlen als varchar zu speichern. Was ich als keine glückliche Vorgehensweise sehe. Aber jeder wie er möchte.

                                            nicht grundsätzlich, aber bei rechnungsnummer, genauso wie kundennummer würde ich immer zu VARCHAR datentp anraten, auch wenn nur zahlen vorkommen.

                                            Das sehe ich genauso , aber mir ging es vor allem um die Werte alá '0,09', die wohl Zahlen sein sollen. Und bei den Feldnamen, würd ich auch nochmal überlegen, ob nicht float die bessere Wahl ist, falls es irgendwann mal auf eine gewissen Genauigkeit ankommt.

                                            Struppi.

                                            1. yo,

                                              aber mir ging es vor allem um die Werte alá '0,09', die wohl Zahlen sein sollen. Und bei den Feldnamen, würd ich auch nochmal überlegen, ob nicht float die bessere Wahl ist, falls es irgendwann mal auf eine gewissen Genauigkeit ankommt.

                                              grundsätzlich sind seine datentypen noch mal zu überlegen und ich würde in einigen von seinen fällen sicherlich keinen VARCHAR datentyp nehmen. aber in den einen fall, den du mit angeführt hast, in diesem falle würde ich keinen zahlentyp nehmen, sondern bei VARCHAr bleiben.

                                              Ilja

                                              1. ...aber in den einen fall, den du mit angeführt hast, in diesem falle würde ich keinen zahlentyp nehmen, sondern bei VARCHAr bleiben.

                                                Oh - das ist wohl ein Mißverständnis gewesen?

                                                Das waren einfach wahlos aus seiner Liste gepickte Werte, ich habe mir nicht die Mühe gemacht, zu jedem Wert den Namen des Feldes rauszusuchen. Mir ging es um's Prinzip, dass Zahlen auch in einem Zahlenformat gespeichert werden sollen.

                                                Und ich denke das wir da einer Meinung sind (was komischerweise selten genug vorkommt)

                                                Struppi.

                                                1. yo,

                                                  Mir ging es um's Prinzip, dass Zahlen auch in einem Zahlenformat gespeichert werden sollen.

                                                  in aller regel trifft das zu, aber eben nicht immer. nimm zum beispiel die postleitzahlen, sind ja nur zahlen, wie der name schon sagt. diese würde ich aber nie im zahlenformat speichern. also nur das kriterium zahlen als domäne würde mir nicht ausreichen, es im zahlenformat abzuspeichern. vielmehr kommt es auf die verwendung drauf an.

                                                  Ilja

                                                  1. echo $begrüßung;

                                                    » Mir ging es um's Prinzip, dass Zahlen auch in einem Zahlenformat gespeichert werden sollen.
                                                    in aller regel trifft das zu, aber eben nicht immer. nimm zum beispiel die postleitzahlen, sind ja nur zahlen, wie der name schon sagt. diese würde ich aber nie im zahlenformat speichern. also nur das kriterium zahlen als domäne würde mir nicht ausreichen, es im zahlenformat abzuspeichern.

                                                    Vor allem, weil die führende 0 in DE eine signifikante Bedeutung hat, im normalen Zahlengebrauch aber nicht mit geschrieben wird.

                                                    echo "$verabschiedung $name";

                                                    1. yo,

                                                      Vor allem, weil die führende 0 in DE eine signifikante Bedeutung hat, im normalen Zahlengebrauch aber nicht mit geschrieben wird.

                                                      jep, gerade wenn man mal schnell ein report aus einer sql abfrage in eine excel-datei kopieren will, dann muss man bei excel sehr darauf achten, das kein zahlenformat vorliegt, weil eben wie von dir gesagt, die führrende 0 "weggezaubert" wird.

                                                      Ilja

                                                    2. Vor allem, weil die führende 0 in DE eine signifikante Bedeutung hat, im normalen Zahlengebrauch aber nicht mit geschrieben wird.

                                                      auch wenn ich eine PLZ nicht als Zahl abspeichern würde, böte sich in diesem Fall zerofill an.

                                                      Struppi.

                                                      1. echo $begrüßung;

                                                        » Vor allem, weil die führende 0 in DE eine signifikante Bedeutung hat, im normalen Zahlengebrauch aber nicht mit geschrieben wird.
                                                        auch wenn ich eine PLZ nicht als Zahl abspeichern würde, böte sich in diesem Fall zerofill an.

                                                        Das ist nur eine oberflächliche Lösung. Und sie ist unbrauchbar, wenn man nicht nur deutsche sondern auch internationale PLZ mit anderen Längen als 5 speichern will (ganz abgesehen von nichtnummerischen Bestandteilen in PLZ-Systemen anderer Länder). Desweiteren orientieren sich viele Abstraktionsschichten am im DBMS konfigurierten Feldtyp und behandeln dann die Zahl als Zahl und weg war sie wieder, die 0.

                                                        echo "$verabschiedung $name";

                                                  2. » Mir ging es um's Prinzip, dass Zahlen auch in einem Zahlenformat gespeichert werden sollen.

                                                    in aller regel trifft das zu, aber eben nicht immer.

                                                    Meine Güte, was soll denn diese Haarspalterei?

                                                    Ich sagte bereits, ich habe nicht die Feldnamen analysiert um herauszufinden ob in diesem oder jeden Fall, eine Zahl besser wäre oder nicht. Die Frage in diesem Thread war, warum eine Zahl nicht richtig sortiert wird und die Antwort ist weil sie nicht als Zahl abgespeichert ist. aus diesem Grund schrieb ich bereits:

                                                    ...du musst einfach die entsprechenden Spalten, die Zahlen darstellen sollen, als Zahlen speichern.

                                                    Struppi.

                                                    1. yo,

                                                      Ich sagte bereits, ich habe nicht die Feldnamen analysiert um herauszufinden ob in diesem oder jeden Fall, eine Zahl besser wäre oder nicht.

                                                      und ich versuche dir zu erklären, dass man sich genau diese mühe machen muss, um sich auf den Datentyp festzulegen und es sich dabei nicht um haarspalterei handelt. alleine sich darauf zu berufen, dass es sich nur um zahlen handelt reicht nicht aus. die verwednung spielt dabei eine grosse rolle.

                                                      Ilja

                                                      1. » Ich sagte bereits, ich habe nicht die Feldnamen analysiert um herauszufinden ob in diesem oder jeden Fall, eine Zahl besser wäre oder nicht.

                                                        und ich versuche dir zu erklären, dass man sich genau diese mühe machen muss,

                                                        Das hast du mir weder erklärt, noch ist das nötig, da ich dir auch schon mehrmals erklärt habe, dass mir das durchaus bewußt war. In meiner Antwort ging es in erster Linie darum, das Problem dass der OP hatte zu erklären.

                                                        alleine sich darauf zu berufen, dass es sich nur um zahlen handelt reicht nicht aus. die verwednung spielt dabei eine grosse rolle.

                                                        Weißte - anstatt mir jetzt tagelang zu erzählen das Zahlen nicht immer Zahlen sind, wäre es sicher sinnvoller gewesen dem OP zu erklären an welcher Stelle er seine varchar durch Zahlen und mit welchen Format austauscht.

                                                        Ich hatte, wie bereits mehrfach gesagt, mir nicht die Spaltennamen angeschaut, war aber für die Fragestellung auch nicht so relevant. Allerdings ließ sich auch ohne Kenntnis der Namen erkennen, dass der OP ein Problem mit seinem Datenformat hat und das hatte er anscheinend auch trotz des ellenlangen Threads. d.h. Krull hatte ein Verständnisproblem mit seinem Datenformat. Und das habe ich ihm erklärt, auch wenn ich die Liste seiner Daten etwas pauschal als Zahlen bezeichnet habe, waren meine dazu gehörigen Aussagen klar.

                                                        Und ob ein Auftragsnummer 100% ein String ist, halte ich auch für eine pauschale Aussage, die sicher nicht immer stimmt. Aber was soll ich mir hier Gedanken machen um Fragen die nicht gefragt waren. Wichtiger war das Grundverständnis, dass Zahlen etwas völlig anderes als Zeichenketten sind und deshalb auch immer in einem passenden Zahlenformat abgespeichert werden.

                                                        So, das war's jetzt von meiner Seite, auch wenn ich schon früher dachte, wir hätten geklärt worum es geht, ich beteilige mich aber nicht mehr weiter an einer hypothetischen, haarspalterischen Diskussion, über ungefragte Dinge.

                                                        Struppi.

                        2. echo $begrüßung;

                          Kannst mir ja schonmal bitte was in PHP fertig machen das den Punkt dann in ein Komma umwandelt. Dafür hab ich nämlich keine Zeit mehr!

                          Du kennst str_replace()?

                          echo "$verabschiedung $name";

                          1. Du kennst str_replace()?

                            Nein?

                            Ich bin in PHP das nötigste realisieren zu können. Wie soll ich da hunderte von Funktionen auswendig können.

                            1. echo $begrüßung;

                              » Du kennst str_replace()?
                              Nein?
                              Ich bin in PHP das nötigste realisieren zu können. Wie soll ich da hunderte von Funktionen auswendig können.

                              Es gibt Funktionen, die gehören zum Standardumfang der Stringbehandlung und finden sich in jeder Programmiersprache beziehungsweise grundegenden Funktionsbibliothek. Und meist heißen sie ähnlich. Man muss also nur nach bekannten signifikanten Wortteilen suchen und ist damit oft schneller als auf eine Antwort in einem Forum zu warten.

                              echo "$verabschiedung $name";

                              1. Gut, gut, OK

                                Ich habs verstanden.

                                Jetzt liegt mir aber mehr das Datenbank Problem am Herzen.

                                Ich krieg nen Anfall hier.

                              2.   
                                $search = ",";  
                                $replace = ".";  
                                  
                                $leistung_1 = str_replace($search, $replace, $leistung1);  
                                
                                

                                ist das so richtig?

                                1. echo $begrüßung;

                                  $search = ",";

                                  $replace = ".";
                                  $leistung_1 = str_replace($search, $replace, $leistung1);

                                  
                                  > ist das so richtig?  
                                    
                                  Ja, aber in dem einfachen Fall brauchst du keine Variablen anzulegen: $leistung\_1 = str\_replace(',', '.', $leistung1);  
                                    
                                  Bist du sicher, dass du das Ergebnis in einer neuen Variable brauchst? ($leistung\_1 vs. $leistung1) Anders gefragt: Benötigst du beide Werte?  
                                    
                                    
                                  echo "$verabschiedung $name";
                                  
                                  1. Bist du sicher, dass du das Ergebnis in einer neuen Variable brauchst? ($leistung_1 vs. $leistung1) Anders gefragt: Benötigst du beide Werte?

                                    Nein beide brauche ich nicht.

                                    Also

                                    $leistung1 = str_replace(",", ".", $leistung1);

                                    geht auch ja?

            2. yo,

              Fehler beim Konvertieren des varchar-Datentyps in numeric., SQL state 37000...

              wahrscheinlich punkt und komma problematik. versuche doch mal vorher in einem SELECT ein REPLACE anzuwenden und dann als decimal zu casten. wenn das klappt, sollte auch dieses vorgehen mit dem INSERT klappen.

              Ilja

          1. eine Tabelle angelegt mit varchar(100), dieselben Zahlen reingeschrieben, umgewandelt in decimal(8,2), es kam eine Fehlermeldung, dass die Umwandlung in Zahlen nicht möglich ist

          decimal erwartet je nach Regionaleinstellungen einen Dezimalpunkt, ggf. liegts daran :)

    2. Ich habe keinen SQL-Server 2008 zum Testen zur Verfügung, aber wenn die Sortierung dort wirklich für decimal-Datentypen alphabetisch ist, dann halte ich das für einen Fehler.

      Ich hab das grade ausprobiert - SQL Server 2008 und SQL Server 2005, beide sortieren Decimal wie gewünscht.