MSSQL Frage Konvertierung varchar in summierbaren Wert (decimal?)
Hallo,
ich habe hier einige Tabellen geerbt und bin nicht besonders bewandert in Datenbanken. Ein bisschen gegoogelt habe ich schon - auch einiges gefunden, aber nicht so richtig durchgeblickt. Ich versuche es nochmal hier.
Ich habe eine Tabelle in der varchar Werte gespeichert sind wie z.B. "1.000,00". Also "." als 1000er Trennzeichen und "," als Dezimaltrennzeichen. Es können natürlich auch deutlich höhere Werte sein - aber immer im genannten Format.
Nun soll ich diese Werte summieren.
Grundlage also so was wie:
SELECT SUM(column_name)
FROM table_name
WHERE condition;
Den column_name muss ich jetzt irgendwie Converten und Replacen.
Ich habe mal den hier versucht: CONVERT(numeric(10,2),REPLACE('column_name',',','.'))
Damit bin ich schon nicht wirklich weitergekommen.
Nur was nehme ich da am besten? Numeric? Und wie "Replace" ich am besten? Kann mir da jemand auf die Sprünge helfen, bitte? Danke.
ich habe hier einige Tabellen geerbt und bin nicht besonders bewandert in Datenbanken. Ein bisschen gegoogelt habe ich schon - auch einiges gefunden, aber nicht so richtig durchgeblickt. Ich versuche es nochmal hier.
Ich habe eine Tabelle in der varchar Werte gespeichert sind wie z.B. "1.000,00". Also "." als 1000er Trennzeichen und "," als Dezimaltrennzeichen. Es können natürlich auch deutlich höhere Werte sein - aber immer im genannten Format.
Nun soll ich diese Werte summieren.
Grundlage also so was wie:
SELECT SUM(column_name)
FROM table_name
WHERE condition;
Den column_name muss ich jetzt irgendwie Converten und Replacen.
Ich habe mal den hier versucht: CONVERT(numeric(10,2),REPLACE('column_name',',','.'))
Damit bin ich schon nicht wirklich weitergekommen.
Nur was nehme ich da am besten? Numeric? Und wie "Replace" ich am besten? Kann mir da jemand auf die Sprünge helfen, bitte? Danke.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 397714
Url: https://administrator.de/contentid/397714
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
5 Kommentare
Neuester Kommentar
Moin,
schau dir das mal an:
https://docs.microsoft.com/de-de/sql/t-sql/functions/cast-and-convert-tr ...
Cast sollte für Deine Zwecke passen, aber Achtung, der Punkt kann Ärger machen.
SELECT CAST(CAST('123.456' as float) as int) sollte das beheben.
Einfach mal durchtesten.
Gruss
schau dir das mal an:
https://docs.microsoft.com/de-de/sql/t-sql/functions/cast-and-convert-tr ...
Cast sollte für Deine Zwecke passen, aber Achtung, der Punkt kann Ärger machen.
SELECT CAST(CAST('123.456' as float) as int) sollte das beheben.
Einfach mal durchtesten.
Gruss
Das Problem mit so verkorksten Tabellen ist das auch etwas anderes als eine Zahl in deinem VARCHAR stehen kann und dann knallt es, genau wie es durch deine Hochkomma geknallt hat, und die ganze Abfrage scheitert. Je nachdem wer die Daten in die Spalte schreibt (Mensch oder Maschine) solltest du solche Fälle noch abfangen, z.B. mit
WHERE isnumeric(spalte) = 1