Anzeige - [Hier werben]
(?) Tags raten (?) (edit)
 
Reply to this topicStart new topicStart Poll
Diskussion

SQL/PHP: Zahl in Datenbank - Komma durch Punkt

kekskruemel
---
Geschrieben am: Fr 13.05.2011, 15:30
Report PostQuote Post

AyomRank 5
**********

Gruppe: Member (aktiv)
Beiträge: 472
Mitglied seit: 8.11.2005


Hallo,

ich habe in einer Datenbank Zahlen derzeit mit Komma als Trennung drinstehen, also z.B. als Wert 51,8342
Nun sollen diese Werte bei insgesamt 19.000 Eintragungen ausgetauscht werden durch einen Punkt.

Wie kann ich das automatisieren? Gibt es eine gute SQL ANweisung dazu?

Ich habe es auch schon mit php probiert, aber da scheint ein Fehler im Code zu sein:
CODE


<?php
include ('define.php'); // DB Zugang
for($i=1; $i<19000; $i++)
{
 $sql_plz = mysql_query("SELECT petrol_station_masters.id, petrol_station_masters.longitude AS  longitude, petrol_station_masters.latitude AS latitude FROM petrol_station_masters WHERE petrol_station_masters.id = '".$i."' ") or die(mysql_error());
 echo mysql_num_rows($sql_plz);
 while( $ds3 = mysql_fetch_object($sql_plz) )
 {
 $latitude =$ds3->latitude;
 $longitude = $ds3->longitude;
 $latitude = str_replace(',', '.', $latitude);
 $longitude = str_replace(',', '.', $longitude);
 
 $update = mysql_query("UPDATE petrol_station_masters SET petrol_station_masters.longitude = '".$longitude."' AND petrol_station_masters.latitude = '".$latitude."' WHERE petrol_station_masters.id = "'.$ds3->petrol_station_masters.id.'" ") or die(mysql_error());
 }
}

?>




--------------------
Top
PMEmail PosterUsers Website
Top
 
 
Jürgen Auer
Server-Daten - Online-CRM-Lösungen
#2 Geschrieben am: Fr 13.05.2011, 16:03 (+00:32)
Report PostQuote Post

AyomRank 9
******************

Gruppe: Ehrenmitglied, Ex-Moderator
Beiträge: 3657
Mitglied seit: 4.02.2006


So etwas würde ich nie so machen.

Abgesehen davon: Existiert das Problem überhaupt?

Was ist das in der Datenbank für ein Datentyp?

Wenn das ein numerischer ist, dann ist das bloß ein 'Scheinergebnis', das mit der Transformation auf die 'deutsche Darstellung' zusammenhängt.

Wenn tatsächlich Zahlen als String mit Komma definiert sind, dann:

Eine zweite Textspalte erstellen, da rein per Update die Kommas durch Punkte ersetzen.

Eine nummerische Spalte erstellen, da die zweite Textspalte reinkonvertieren.

Originalspalte umbenennen, letzte Spalte als Original benennen.

Das analog mit der zweiten Spalte.


--------------------
Web-Anwendung 3.0: Ein Online-Kalender für Termine vieler Filialen.

Server-Daten - die Single-Data-Solution: Web-Datenbanken als Online - CRM - Lösung.
Ihre Geschäftsprozesse entscheiden, was Ihre Online-Datenbank macht. Sie konzentrieren sich auf Ihr Kerngeschäft - Ihre Datenbank funktioniert.
Top
PMEmail PosterUsers Website
Top
 
kekskruemel
---
#3 Geschrieben am: Fr 13.05.2011, 16:43 (+00:40)
Report PostQuote Post

AyomRank 5
**********

Gruppe: Member (aktiv)
Beiträge: 472
Mitglied seit: 8.11.2005


Die derzeitigen Spalten sind varchar.

Ich habe keine Ahnung wie du das genau meinst und wie ich das am Besten umsetze.


--------------------
Top
PMEmail PosterUsers Website
Top
 

#4 Geschrieben am: Fr 13.05.2011, 17:09 (+00:26)
Report PostQuote Post

AyomRank 9
Group Icon 2 Gruppe: Moderator, Experte

Gruppe: Moderator, Experte
Beiträge: 2820
Mitglied seit: 27.12.2004


Die SQL-Abfragen sollten besser erst getestet werden, da ich es nicht gemacht habe.


SQL
UPDATE petrol_station_masters SET petrol_station_masters.longitude = REPLACE(petrol_station_masters.longitude, ',', '.') AND petrol_station_masters.latitude = REPLACE(petrol_station_masters.latitude, ',', '.');


Sobald Du nur noch Zahlen mit Punkt drin stehen hast, kannst Du wohl auch das Feld in ein Decimal, Float oder Double ändern, wäre zumindestens sehr sinnig Daten als das zu Speicher, was sie auch sind (und ich denke das meint teilweise auch Jürgen), ggf. musst Du aber diese Daten erst in eine neue Spalte kopieren, danach die alte Löschen und im Anschluss die neue umbenennen. Das vorherige Testen an einen Kopie der DB sollte natürlich selbstverständlich sein. wink.gif

SQL
UPDATE petrol_station_masters SET petrol_station_masters.longitude_new = REPLACE(petrol_station_masters.longitude, ',', '.') AND petrol_station_masters.latitude_new = REPLACE(petrol_station_masters.latitude, ',', '.');
Top
PMEmail PosterUsers Website
Top
 
Jürgen Auer
Server-Daten - Online-CRM-Lösungen
#5 Geschrieben am: Fr 13.05.2011, 17:57 (+00:47)
Report PostQuote Post

AyomRank 9
******************

Gruppe: Ehrenmitglied, Ex-Moderator
Beiträge: 3657
Mitglied seit: 4.02.2006


QUOTE (kekskruemel @ Fr 13.05.2011, 17:43)
Die derzeitigen Spalten sind varchar.

Das sind Zahlen, also sollten die auch als Zahlen abgespeichert werden.

Ich nutze für Geodaten üblicherweise

Decimal(18,14)

also Dezimalzahlen mit 4 Vorkomma und 14 Nachkommastellen.

Ansonsten muß man bei Berechnungen ständig erst die Textdarstellung in nummerische Daten umwandeln.


Aber so eine Typumwandlung würde ich nie direkt auf der Spalte machen. Sondern immer über Hilfsspalten gehen, welche die Zwischenwerte aufnehmen:

CODE

Update Tabelle Set Zwischenspalte = Replace(longitude, ',', '.')
Update Tabelle Set longitude_neu = Cast(Zwischenspalte as Decimal(18,14))


so als Pseudocode (ich weiß nicht genau, ob die Update-Anweisung bei mySql so ist).

Und dann die Spalten umbenennen:

longitude -> longitude_old
longitude_neu -> longitude


Solange man das über zusätzliche Spalten macht, kann man das auch immer auf der 'Originaltabelle' machen, man kann ja die Zusatzspalten wieder rauslöschen.


--------------------
Web-Anwendung 3.0: Ein Online-Kalender für Termine vieler Filialen.

Server-Daten - die Single-Data-Solution: Web-Datenbanken als Online - CRM - Lösung.
Ihre Geschäftsprozesse entscheiden, was Ihre Online-Datenbank macht. Sie konzentrieren sich auf Ihr Kerngeschäft - Ihre Datenbank funktioniert.
Top
PMEmail PosterUsers Website
Top
 
Thema wird von 0 Benutzer(n) gelesen (0 Gäste und 0 anonyme Benutzer)
0 Mitglieder:

Topic Options Reply to this topicStart new topicStart Poll

 


> Ähnliche Themen
systemkamera punkt info zu verkaufen HenryDietmar 404 0 Do 17.04.2014, 04:24
einnahmen durch VG Wort? Tryle 1244 14 Di 1.04.2014, 10:49
Starke, natürliche Links durch Linkbaits David-Clickport 566 0 Di 4.02.2014, 13:40
Selbstständig durch IM? Vekay 3766 4 Mo 27.01.2014, 15:40
Starke, natürliche Links durch Linkbait-Kampagne David-Clickport 695 3 Mo 20.01.2014, 12:54
Suche Duden-Wörter-Datenbank FilOO 1895 9 Di 13.08.2013, 07:02
Abstrafung durch 301 Weiterleitung? caligari 1265 5 Mo 27.05.2013, 19:59
Marketing durch Facebook Fanpages? Artjom 1983 12 Do 20.12.2012, 13:46


Günstig werben auf Ayom:
Kontakt: ayom@small-n-tall.com



Anzeigen

Textlinks kaufen oder anbieten





[Hier werben]

 

Statistiken:
Top 10 Autoren heute
Top 50 Autoren insgesamt