Seite 1 von 1
[gelöst] sql: Zahleninhalte in zahl wandeln ?
Verfasst: Mo 23. Mär 2026, 16:50
von Pit Zyclade
Ich habe eine
Datenbanktabelle XXX
Spalte A decimal , 8, 2, Formatbeispiel 0,00
Spalte B text varchar, 100, Formatbeispiel @
In B sind ausschließlich Zahlen von der Art 100,99 (maximal dreistellig, zwei Dezimalstellen)
Ich möchte den Inhalt von Spalte B nach A kopieren, so dass ich später Spalte B löschen kann.
Mein Ziel ist nämlich eine Abfrage mit Sortierung nach dem Zahlenwert zu erhalten (also nicht nach Buchstaben, also 90,0 soll nicht mehr sein 100,0)
update XXX set "A" = substring("B") oder ähnlich oder ganz andere Befehlszeilen ?
Wie sehen andere Umwandlungsbefehle aus?
Danke für Hilfe
Pit
Re: sql: numerische textinhalte in zahl wandeln ?
Verfasst: Di 24. Mär 2026, 10:57
von Pit Zyclade
Hallo SQL-Experten!
UPDATE "XXX" set "A" = cast("B" as decimal)
ergibt auch nur Fehler (wörtlich: Wrong data type: java.lang.NumberFormatException)
Ich habe keine Idee und kann die Hinweise im Web nicht deuten.
Re: sql: Zahleninhalte in zahl wandeln ?
Verfasst: Di 24. Mär 2026, 15:41
von RobertG
Wenn, dann müsste das ja auch
CAST("b" AS DECIMAL(8,2))
sein, oder?
Re: sql: Zahleninhalte in zahl wandeln ?
Verfasst: Di 24. Mär 2026, 19:45
von Pit Zyclade
Hallo Robert, du hast sicher die meiste Erfahrung...
Ich habe versucht:
UPDATE "XXX" SET "A" = CAST("B" AS DECIMAL(8,2))
und erhalte:
Wrong data type: java.lang.NumberFormatException
Ich kann die Befehle auch klein schreiben, aber das ändert nichts.
irgendwo ist ein Fehler drin (und du weißt, das ich gar kein Experte bin). Ich suche nur EIN funktionierendes Beispiel...
Re: sql: Zahleninhalte in zahl wandeln ?
Verfasst: Mi 25. Mär 2026, 08:57
von RobertG
Der Haken sind wohl die angeblichen "Zahlen":
'100,99' kann eine Datenbank nicht in eine Zahl umwandeln, da der Dezimaltrenner ein Komma ist.
wird da wohl helfen - hier gerade einmal für eine Abfrage getestet.
Da brauche ich dann auch keine Spalte um zu wandeln. Mit der internen HSQLDB funktioniert
Code: Alles auswählen
SELECT "ID", "Text", CAST(REPLACE("Text",',','.') AS DECIMAL(8,2)) AS "Zahl" FROM "tbl_TextZahl" ORDER BY "Zahl"
Re: sql: Zahleninhalte in zahl wandeln ?
Verfasst: Mi 25. Mär 2026, 09:55
von Pit Zyclade
Hallo Robert (@RobertG)
Daran hatte ich auch schon gedacht als ich im Internet recherchierte. Aber das waren überwiegend ausländische Diskutanden. Wir haben doch LO auf Deutschland eingestellt und Zahlen haben Kommata. Auch die Formateinstellung in der HSQLDB haben doch Zahlen mit Komma. SQL ist wohl ausschließlich auf english ?! (Müssen die Chinesen auch Informatik in Englisch praktizieren? Wohin geht die Welt eigentlich mit KI?)
Deine Vorschläge werde ich heut noch testen...
Bis dann!
Re: sql: Zahleninhalte in zahl wandeln ?
Verfasst: Mi 25. Mär 2026, 11:20
von Pit Zyclade
Hallo Robert,
Ja, beide Vorschläge funktionieren!
Der zweite ist deine Expertenlösung für die sofortige Nutzung meiner Abfrage und ich habe sie bleibend notiert!
Aber wenn ich zukünftig mal eine andere Abfrage gestalte, ist eine bleibende Änderung der Formatierung des Feldes auf decimal einfacher für eine Sortierung nach Zahl mit ORDER BY.
Die wichtigste Sache für mich bleibt, dass man bei Umgestaltung mit CAST eine englische Zahl mit Punkt statt Komma voraussetzt!
Dreimal Danke!