Rechnen / varchar

Rechnen / varchar

am 16.12.2005 09:19:56 von Mark Knochen

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

Re: Rechnen / varchar

am 16.12.2005 10:26:56 von Tobias Kutzler

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

Re: Rechnen / varchar

am 16.12.2005 15:24:49 von Niels Braczek

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 |
`----------------------------------------------------------- -----´

Re: Rechnen / varchar

am 17.12.2005 14:25:35 von Helmut Schmuckermair

> 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!