phpbar.de logo

Mailinglisten-Archive

Re: zahlen ersetzen und runden
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: zahlen ersetzen und runden



Ulrich Vogel schrieb am Sonntag, den 19. September 1999:
> In einer mysql- Datenbank, die schon auf einem virtuellen Server 
> liegt, wurde Preisangaben in char() - Felder eingespielt...:-(
> 
> Meine Frage: 
> Kann man diese char() in numerische Felder umwandeln, Inhalt bleibt
> bestehen?

Wenn die Schreibweise dieser Zahlen passend für MySQL-Zahlfelder wäre,
könntest mit ALTER TABLE einfach den Spaltentyp ändern und MySQL würde
alle Wert in dieser Spalte umwandeln.  Wenn z.B. die Tabelle 'Katalog'
und das Feld 'Preis' heißt, dann:

  ALTER TABLE Katalog MODIFY COLUMN Preis FLOAT;

> Dummerweise werden die Preise mit einem Komma getrennt und 
> nicht mit einem Punkt  (23,32 statt 23.32).
> 
> Falls dies moeglich ist - kann man die dann erzeugten numerischen 
> Felder mit einem Faktor multiplizieren und dann auf 2 
> Nachkommastellen runden? ( etwa  23.32 *1.06 , muss keine 
> kaufmaennische Rundung sein, waere aber nett :-)   )

Dann geht das leider nicht so direkt, aber ähnlich:
- einfach eine neue Spalte mit dem richtigen Typ hinzufügen
- per UPDATE die alten Werte umgerechnet in die neue Spalte übertragen
- die alte Spalte löschen
- die neue Spalte passend umbenennen

  ALTER TABLE Katalog ADD COLUMN Preis_neu FLOAT AFTER Preis;
  UPDATE Katalog SET Preis_neu = ROUND( REPLACE(Preis,',','.') * 1.06, 2 );
  ALTER TABLE Katalog DROP COLUMN Preis;
  ALTER TABLE Katalog CHANGE COLUMN Preis_neu Preis FLOAT;

Ciao,
  Martin
-- 
Martin Ramsch <m.ramsch_(at)_computer.org> <URL: http://home.pages.de/~ramsch/ >
PGP KeyID=0xE8EF4F75 FiPr=52 44 5E F3 B0 B1 38 26  E4 EC 80 58 7B 31 3A D7

---
*** Abmelden von dieser Mailingliste funktioniert per E-Mail
*** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive