Rechnen / varchar

Hallo,

ich weiss, ist wahrscheinlich ne blöde Frage, aber ich steh irgendwie
auf meinem Gehirn:

ich habe eine DB übertragen bekommen, in der in diversen Spalten - alle
varchar(255) Zahlen und Beträge stehen mit denen ich nun mit PHP
Berechnungen anstellen soll.

Bekanntlich lässt sich aber mit varchar nicht so gut rechnen.
Allerdings kann ich auch nicht einfach den Spaltentyp ändern, weil ich
etwas Bedenken habe, die Werte zu verlieren.

Habt ihr Tipps dazu?

Danke

Mark
Mark Knochen [ Fr, 16 Dezember 2005 09:19 ] [ ID #1105597 ]

Re: Rechnen / varchar

Mark Knochen schrieb:
> Hallo,
>
> ich weiss, ist wahrscheinlich ne blöde Frage, aber ich steh irgendwie
> auf meinem Gehirn:
>
> ich habe eine DB übertragen bekommen, in der in diversen Spalten - alle
> varchar(255) Zahlen und Beträge stehen mit denen ich nun mit PHP
> Berechnungen anstellen soll.
>
> Bekanntlich lässt sich aber mit varchar nicht so gut rechnen.
> Allerdings kann ich auch nicht einfach den Spaltentyp ändern, weil ich
> etwas Bedenken habe, die Werte zu verlieren.

Also soweit ich mich erinnere versucht PHP immer automatisch Strings in
Zahlen zu konvertieren, wenn man mit ihnen Berechnungen durchführen
möchte. Siehe dazu:
http://www.php.net/manual/de/language.types.php

Da steht, dass der Typ ja in PHP nicht explizit vorgegeben wird, sondern
durch dessen Verwendung bestimmt wird.

Ergo: Einfach die "Strings" aus der DB holen und Berechnungen anstellen.
Einfach mal probieren. ;-)

Ciao,
Tobias
Tobias Kutzler [ Fr, 16 Dezember 2005 10:26 ] [ ID #1105599 ]

Re: Rechnen / varchar

Mark Knochen schrieb:

> ich habe eine DB übertragen bekommen, in der in diversen Spalten - alle
> varchar(255) Zahlen und Beträge stehen mit denen ich nun mit PHP
> Berechnungen anstellen soll.

Kaputt, aber zum Glücxk kein Problem.

> Bekanntlich lässt sich aber mit varchar nicht so gut rechnen.

Das gilt vielleicht für alle anderen, nicht aber für PHP. PHP mach wann
immer möglich eine automatische, meistens sogar sinnvolle Typenumwandlung.

> Allerdings kann ich auch nicht einfach den Spaltentyp ändern, weil ich
> etwas Bedenken habe, die Werte zu verlieren.

Die DB in Ordnung zu bringen, ist trotzdem eine gute Idee.
Kopiere am besten die betroffenen Spalten in eine neue mit korrektem
Typ. Dann kannst du prüfen, ob alle Daten angekommen sind, anschließend
die alte löschen und schließlich die neue umbenennen.

HTH
NIels

--
| http://www.kolleg.de · Das Portal der Kollegs in Deutschland |
| http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |
| Webdesign · Webhosting · E-Commerce · Mambo Content Management |
`----------------------------------------------------------- -----´
Niels Braczek [ Fr, 16 Dezember 2005 15:24 ] [ ID #1105602 ]

Re: Rechnen / varchar

> ich habe eine DB übertragen bekommen, in der in diversen Spalten - alle
> varchar(255) Zahlen und Beträge stehen mit denen ich nun mit PHP
> Berechnungen anstellen soll.
Berechnungen würde ich von der Datenbank durchführen lassen, die kann
das schneller als PHP - also einfach die Feldtypen ändern (s.u.!)

> Bekanntlich lässt sich aber mit varchar nicht so gut rechnen.
in der Datenbank ja,
in PHP ist nach der Abfrage erst mal alles Text/String. Aufgrund der
automatischen Typenumwandlung musst du darauf keine Rücksicht nehmen -
ich selbst benutze aber gerne die explizite Typenumwandlung zB.

$gesamt = (int) $zeile['stueck'] * (float) $zeile['preis'];

wobei die $zeile einen Datensatz darstellt

http://www.php.net/manual/de/language.types.type-juggling.ph p#language.types.typecasting

> Allerdings kann ich auch nicht einfach den Spaltentyp ändern, weil ich
> etwas Bedenken habe, die Werte zu verlieren.
vorher *immer* ein Backup (dump) machen und ausprobieren!
Helmut Schmuckermair [ Sa, 17 Dezember 2005 14:25 ] [ ID #1106544 ]
PHP » de.comp.lang.php.datenbanken » Rechnen / varchar

Vorheriges Thema: [FAQ/2005-12-18] Loesungen fuer deine PHP-Probleme
Nächstes Thema: PostgreSQL+PHP -Fragen zu Timeout