Mailinglisten-Archive |
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
php::bar PHP Wiki - Listenarchive