Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben
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

Geschrieben

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?

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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.

Geschrieben

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);

Geschrieben

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.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...