metleck Geschrieben 9. Mai 2006 Teilen Geschrieben 9. Mai 2006 Hey! Also ich versuche gerade eine Rechnung durchzuführen. Leider ist mir aufgefallen, das die Spalten mit den Zahlen vom Typ VARCHAR2 sind (ORACLE) und nicht NUMBER. Daher klappt das mit dem Rechnen nicht so wirklich. Jetzt bleibt mir die eine Möglichkeit, den Typ der Spalte zu ändern, was wohl sehr lange dauern könnte oder das ganz in der Abfrag zu steuern. Letzteres hab ich 'versucht' , hat aber nicht so ganz geklappt: SELECT ((TO_NUMBER(DIFFERENZ)/TO_NUMBER(K_BISHER))*100) AS PROZENT FROM HAGEBAU; Ich krieg den Fehler :Ungültige Zahl Was mache ich falsch? THX Bg Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jasper Geschrieben 9. Mai 2006 Teilen Geschrieben 9. Mai 2006 Was mache ich falsch? dein statement ist richtig, aber in den spalten sind nichtnumerische werte. konvertiere die spalten zu number, das ist die sauberste lösung. -j Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
metleck Geschrieben 10. Mai 2006 Autor Teilen Geschrieben 10. Mai 2006 Also du meinst in der Tabelle aus Varchar2 n Number machen. Ja das hab ich mir auch gedacht aber das geht nur wenn keine Werte in der Spalte sind, da sind aber Werte...viele Werte. Oder gibts da noch ne andere Möglichkeit? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mme Geschrieben 10. Mai 2006 Teilen Geschrieben 10. Mai 2006 Das ändern der Spalte löst dein Problem nicht. Da sind offensichtlich Datensätze vorhanden die was anderes ausser Zahlen enthalten. Ob du in der Abfrage änderst, oder die Definition änderst ist egal, in beiden fällen musst du erst die Datensätze die keine Zahlen beinhalten finden und rausnehmen... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
metleck Geschrieben 10. Mai 2006 Autor Teilen Geschrieben 10. Mai 2006 Es sind nur Zahlen in der Spalte. Das Problem ist halt das es ne VARCHAR2 Spalte ist und ich das nicht ändern kann ohne die Datensätze zu löschen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ipu Geschrieben 10. Mai 2006 Teilen Geschrieben 10. Mai 2006 aber könntest du denn nicht eine neue tabelle anlegen und die daten anschl. rüberschaufeln, wenn so gar nix anderes geht? grüße von ipu Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mme Geschrieben 10. Mai 2006 Teilen Geschrieben 10. Mai 2006 wenn nur zahlen in der spalte sind, dann würdest du diese Fehlermeldung nicht bekommen!!! Somit kann es nicht sein, es sein denn Oracle hat an dieser Stelle einen BUG was ich mir leider durchaus NICHT vorstellen kann. (Natürlich hat Oracle Bugs, und davon auch nicht zuwenig, aber an dieser Stelle nach deiner Beschreibung, glaube ich das einfach nicht) Also auch wenn du das in einen andere Tabelle mit insert as select machst und in der neuen Tabelle handelt es sich um ein Numberfeld, wirst du die gleiche Fehlermeldung bekommen!!! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
metleck Geschrieben 10. Mai 2006 Autor Teilen Geschrieben 10. Mai 2006 Hm ich versuch das mal mit der neuen Tabelle Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mme Geschrieben 10. Mai 2006 Teilen Geschrieben 10. Mai 2006 ich kenne zwar deine Daten nicht, aber vielleicht sind da irgendwo blanks mit drin?? Setz mal folgende Selects ab: select * from hagebau where substr(DIFFERENZ,1,1) not in(1,2,3,4,5,6,7,8,9,0) and substr(DIFFERENZ,length(DIFFERENZ),1) not in(1,2,3,4,5,6,7,8,9,0); select * from hagebau where substr(K_BISHER,1,1) not in(1,2,3,4,5,6,7,8,9,0) and substr(K_BISHER,length(K_BISHER),1) not in(1,2,3,4,5,6,7,8,9,0); Da es meistens so ist, das solche "nicht zahlen" am anfang oder am ende stehen, kannst du das hiermit prüfen... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mme Geschrieben 10. Mai 2006 Teilen Geschrieben 10. Mai 2006 falls das oben nichts hilft... Hast du kommas oder punkte in den spalten?? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
metleck Geschrieben 10. Mai 2006 Autor Teilen Geschrieben 10. Mai 2006 Danke! Damit findet der nix aber ich hab jetzt mal die Tabelle kopiert und aus den Spalten NUMBER SPalten gemacht wo ichs braucht und aufeinmal klappts. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mme Geschrieben 10. Mai 2006 Teilen Geschrieben 10. Mai 2006 kleiner Fehler bei den beiden Statements oben... In der where clause muss ein OR stehen statt dem AND also: select * from hagebau where substr(DIFFERENZ,1,1) not in(1,2,3,4,5,6,7,8,9,0) or substr(DIFFERENZ,length(DIFFERENZ),1) not in(1,2,3,4,5,6,7,8,9,0); select * from hagebau where substr(K_BISHER,1,1) not in(1,2,3,4,5,6,7,8,9,0) or substr(K_BISHER,length(K_BISHER),1) not in(1,2,3,4,5,6,7,8,9,0); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
metleck Geschrieben 11. Mai 2006 Autor Teilen Geschrieben 11. Mai 2006 Morgen! Aha also wenn ich Kommas drin hab kann das auch zu Fehlern führen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mme Geschrieben 11. Mai 2006 Teilen Geschrieben 11. Mai 2006 eventuell schon. Das hängt z.b. von deinen NLS-Parametern ab. Im deutschen und im amerikanischen sind Punkt und komma genau andersherum. So kann es vielleicht kommen, das er mit dem Punkt bzw. das Komma an bestimmten Stellen nicht in eine Zahl konvertieren konnte. Achte darauf, das in der DB und am Client diese Parameter unterschiedlich sein können. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
metleck Geschrieben 11. Mai 2006 Autor Teilen Geschrieben 11. Mai 2006 ok vielen dank! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.