Zum Inhalt springen

TO_NUMBER Frage


metleck

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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