SQL Komma durch Punkt ersetzen

Murphy9904

Lt. Junior Grade
Registriert
Mai 2007
Beiträge
344
Hi,
Ich müsste in meiner SQL abfrage alle Kommas durch einen Punkt ersetzen.. so dass die Zahlen halt im Englischen format dastehen.

also in dem Kontext:
Irgendwas / 100 * (100 + (Select ProzentMehr From [Irgendwo].[dbo].[Tabelle] where Auto = 'Golf'))
kann ich da irgendwas dazukritzeln, dass das ergebniss Punkt statt Komma getrennt ist?
oder muss ich das irgendwie in nen String umwandeln und dann Zeichen ersetzen?

LG
Murphy
 
und wie schaffe ich die Kommas ausfindig zu machen und zu ersetzen?
und wieso update, wenn die daten noch nicht in der Datenbank sind..

Ich will mit einem Select die Daten auslesen und eben die Kommas als Punkt haben. In der Datenbank selbst soll alles so bleiben wies ist.
 
Am einfachsten sollte es sein, wenn die Daten nach dem Auslesen mit PHP bearbeitet werden (str_replace).
 
und wieso update, wenn die daten noch nicht in der Datenbank sind..
Und in der nächsten reihe steht, du willst Daten mit einem Select auslesen, irgendwie Widerspricht sich das.

Du musst nach einem Teilstring suchen der "," enthält und diesen dann ersetzten. Ein einfaches Where "," wird wohl nicht reichen aber dazu müsste es im Internet doch dutzende Lösungen geben.
 
Ja in meinem Fall lese ich sie mit C# aus.

C# ruft diese Funktion auf und bastelt dann damit weiter rum..
nur weis ich beim auslesen nicht ob diesmal mit "." oder "," gearbeitet wird.

ersetzten klingt cool - hab grad die Funktion "REPLACE" gefunden werde mal schaun ob das geht

---

dass ich das davor nicht gefunden habe..
mit replace geht es.

Code:
REPLACE(Irgendwas / 100 * (100 + (Select ProzentMehr From [Irgendwo].[dbo].[Tabelle] where Auto = 'Golf')),',','.')
 
Zuletzt bearbeitet:
Denk dran die Eingaben zu prüfen, dass es sich wirklich um Zahlen handelt. Wenn es sich auch um Zahlen in Text handelt würde der einfachste Weg über Regular Expressions führen.
 
Das es sich um Zahlen handelt ist bei mir nicht wichtig.
die Zahlen werden nur auf einer Website ausgegeben

funktioniert super so
 
nur eine kleine Anmerkung bezüglich "Programmier-Unarten".

Wenn Du Werte aus der Datenbank liest, die Du in länderspezifischen Formaten ausgeben willst, solltest Du Dich mit "Locale" Funktionalitäten befassen. Erschafft flexiblen Code, der je nach Einstellung die passende(!) Ausgabe erzeugt. Aus der Datenbank kommt ohnehin kein Wert mit Komma oder Punkt, es sei denn, Du speicherst die "Zahlen" als "String". Die Datenbank liefert Dir lediglich einen WERT (genaugenommen einen Bruch), der von der Ausgabesteuerung z.B. in Deinem C Programm interpretiert wird.

Was passiert nämlich, wenn man einfach "nur" Kommas durch Punkte ersetzt?

Beispiel-Zahl: 2014,50 Euro (deutsche Notation ohne 1000er) wird erfolgreich in 2014.50 gewandelt
Aber was, wenn auf einmal 2.014,50 kommt? Oder einer auf einem ami-System das programm fährt und 2,014.50 kommt? Ich habe auch schon 2,014,50 gesehen. Ein Replace bekäme hier Schwierigkeiten bzw. müsste aufwendig diese Besonderheiten abklären. Also besser gleich beim ersten (impliziten) Cast in eine Zeichenfolge Formatregeln anhand der Locale mit übergeben, das erspart einige Sorgen.

Hoffe, einen kleinen Denkanstoß gegeben zu haben.
 
Zurück
Oben