![]() |
Datenbank: MS Access • Version: 2000 • Zugriff über: ADO
Ersetzen von "." durch "," mit SQL
Ich habe eine Tabelle in der in einer Spalte vom Typ TEXT Zahlen stehen. Diese haben das amerikanische Format, also "." anstatt "," als Dezimaltrennzeichen.
Beispiel: 1.45 4 2.4 etc. Nun möchte ich überall den Punkt durch einen Komma ersetzen. Gibt es dafür eine SQL UPDATE Syntax? Gruß Alfonso |
Re: Ersetzen von "." durch "," mit SQL
ändere das format für das feld in der access tabelle auf #.##0,00" €";-#.##0,00 €"
und schon ist das problem gelöst bzw. wandele das textfeld zuerst in ein numerisches um. mfg |
Re: Ersetzen von "." durch "," mit SQL
T-SQL im MSSQL Server unterstützt die Funktion Replace. Vielleicht gibts das ja auch bei Access.
Hast du eventuell schonmal versucht zu casten. Denn was hat ein Float in einem Feldtypen TEXT zu suchen :gruebel: |
Re: Ersetzen von "." durch "," mit SQL
Zitat:
Deswegen will ich es vorher konvertieren. Hat jemand eine idee? Gruß Alfonso |
Re: Ersetzen von "." durch "," mit SQL
Hallo,
ich denke auch, dass da etwas schief gelaufen ist. Gut dass die Werte im internen Format gespeichert sind:
SQL-Code:
So wird die Spalte c in eine FLOAT-Spalte gewandelt und danach liefert ein einfaches SELECT c FROM t die lokalisierte Ausgabe.
ALTER TABLE t ALTER COLUMN c FLOAT
Edit: Bei der Übernahme kann CAST(c AS FLOAT) eingesetzt werden. Grüße vom marabu |
Re: Ersetzen von "." durch "," mit SQL
Ich kann/darf die Source Tabelle nicht mit ALTER Table ändern.
Ich habe folgendes unter Access direkt zum laufen gebracht:
SQL-Code:
Von ADO aus erhalte ich jedoch einen Fehler, dass es Replace nicht kennt.
UPDATE TBL_ORIG SET CI_POWER = REPLACE(CI_POWER,".",",")
|
Re: Ersetzen von "." durch "," mit SQL
Hallo Alfonso,
Replace würde in Delphi funktionieren... :wink: Dein Vorhaben kann ich jetzt im Detail nicht genau abschätzen. Ich würde 2 Varianten in Betracht ziehen: 1.) mach es mit Delphi. Du kannst dort alles ändern wie du es benötigst und bist da nicht durch Access beschränkt. 2.) exportiere in ein csv-File. Dann den Punkt ersetzen. Wenn du mehr wie 65535 Datensätze hast kannst du Excel nicht verwenden (außer Excel 2007). Dann verwende z.B. den Ultra Edit (gibts auch als Testversion). Da kann man auch Spaltenbereiche markieren und innerhlab der Markierung mit Suchen/Ersetzen arbeiten Das bearbeitete csv-File dann einfach in eine neue (Access?)Tabelle einlesen (externe Daten importieren) (meistens ist diese Q+D-Methode schneller als Access dazu zu bewegen, dass zu tun was man erreichen will) |
Re: Ersetzen von "." durch "," mit SQL
Zitat:
wenn du alleine die datenbankbearbeiten kannst, was steht dann dagegen, die tabelle einzulesen, die spalte zu droppen und 'ne neue zu erstellen (als zahl) um anschliessend die daten im richtigen format zurückzuschreiben????? wär doch 'ne überlegung wert, oder... |
Re: Ersetzen von "." durch "," mit SQL
Zitat:
|
Re: Ersetzen von "." durch "," mit SQL
Hallo,
hilft alles nichts. Ich habe gelesen, dass REPLACE nur in Access direkt geht. Eine Konvertierungsroutine, die in einer Schleife durch alle Datensätze geht und dann mit ADOtmp.Edit; ... ADOtmp.Post; die Werte ändert dauert ewig (über 100.000 Datensätze). Wenn ich den Datentyp ändere, wie vorgeschlagen mit ALTER TABLE, passiert der gleiche Fehler: "." wird ignoriert und aus 5.12 wird 512. Einzige gefundene unschöne Lösung bisher: Vor der Umwandlung tausche ich in der Systemsteuerung unter Ländereinstellungen die Bedeutung von "." und "," aus. Dann konvertiert er richtig. Anschließend muss ich es wieder umstellen. Kann man das automatisiert machen? Oder hat noch jemand eine Kluge Idee? Gruß Alfonso |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz