Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

TO_NUMBER Frage

Empfohlene Antworten

Veröffentlicht

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

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

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?

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

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

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

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

Hm ich versuch das mal mit der neuen Tabelle

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

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.

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

Morgen!

Aha also wenn ich Kommas drin hab kann das auch zu Fehlern führen?

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.

ok vielen dank!

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.