dr.colossos: ORACLEs Tausender/Dezimaltrennzeichen

Beitrag lesen

Hi,

danke fuer deine Antwort.

Nochmals vorab.

Im Moment habe ich KEINE 1000er-Zeichen, und ich WILL auch keine 1000er-Zeichen. Ich will nur sicher sein, dass sie bei einem Kunden auch nicht kommen. Ich habe aber nirgends gefunden wie man die 1000er-Zeichen deaktivieren kann (siehe 4.).

Nun zu deiner Antwort.

1. "Nunja, wenn Du die Zahl in PHP dann schon als float hast ..."

Hab ich ja nicht, es kann ja, falls das 1000er-Trennzeichen drin ist, etwas wie 19,999.99 zurückkommen, das ist für PHP ein String, oder zumindest kein float.

2. " ... warum nimmst Du dann nicht einfach in PHP die Funktion number_format()? Dann muss Oracle Dir ja auch keinen Tausendertrenner liefern."

Ich will die 1000er-Zeichen ja NICHT. Klar, ich koennte jedes Resultat meiner Queries ggf. mit number_format anpassen, aber da muss es doch besseres geben, dass ist ja unnötiger overhead.

3. Ich glaube du hast mich falsch verstanden.

Es geht um folgendes:

$result = db_query(SELECT prize FROM prices WHERE id=1);
// $result kann nun Werte wie 0.99, 3.99, 199.99, 19,999.99 haben

Ich habe nirgends gefunden wo ich den GROUP SEPARATOR umgehen kann, denn ich brauch ihn nicht, besser gesagt, ich DARF ihn nicht bekommen.

Ich will den "." als Dezimaltrennzeichen, und NICHTS mehr, keine 1000er-Trennzeichen oder Waehrungssymole etc. Jedes andere DBMS dass ich mit PHP ansteuere macht das auch so (in seiner Normaleinstellung), denn so rechnet man halt mit floats.

Im DB-Feld steht 19999.99, also will ich auch in PHP 19999.99.

4. »» Ansonsten: Wenn ich es richtig im Kopf habe (kann mich auch täuschen), verwendet Oracle den "Group Separator" nur dann, wenn Du ein 'G' in Deinem Format für TO_CHAR stehen hast - z.B. TO_CHAR(wert, '9G999'), das G wird durch den eingestellten Wert ersetzt).

Okay, wenn er den GROUP SEPARATOR tatsächlich nur einfuegt wenn ich mit "TO_CHAR" arbeite, dann waere ich schon zufrieden.

Nochmal zusammenfassen. Ich will einfach vermeiden, dass ich in PHP aufeinmal einen Ausdruck "$produkt = 19,999.00 * 2;" stehn habe, weil dass nicht gut geht.

Im Moment krieg ich von ORACLE die Werte auch richtig, aber ich musste trotzdem ja einen GROUP SEPARATOR angeben bei ...

"ALTER SESSION SET NLS_NUMERIC_CHARACTERS = '.,';".

Woher weiss ich, dass beim Kunden dann nicht doch der "." als GROUP SEPARATOR auftritt.

Kannst du mir noch folgen?

Danke!