ORACLE - Wählen Sie Count on a Subquery

Ich habe eine Oracle-Tabelle, die eine Reihe von Bereichen (RangeA und RangeB) enthält. Diese Spalten sind varchar, da sie sowohl numerische als auch alphanumerische Werte enthalten können, wie im folgenden Beispiel dargestellt:

ID|RangeA|RangeB
1 |   10 |   20
2 |   21 |   30
3 | AB50 | AB70
4 | AB80 | AB90

Ich muss eine Abfrage ausführen, die nur die Datensätze mit numerischen Werten zurückgibt, und eine Zählung für diese Abfrage durchführen. Bisher habe ich versucht, dies mit zwei verschiedenen Abfragen ohne Glück zu tun:

Abfrage 1:

SELECT COUNT(*) FROM (
SELECT RangeA, RangeB FROM table R
WHERE upper(R.RangeA) = lower(R.RangeA)
) A
WHERE TO_NUMBER(A.RangeA) <= 10

Abfrage 2:

WITH A(RangeA,RangeB) AS(
SELECT RangeA, RangeB FROM table 
WHERE upper(RangeA) = lower(RangeA)
)
SELECT COUNT(*) FROM A WHERE TO_NUMBER(A.RangeA) <= 10

Die Unterabfrage funktioniert einwandfrei, da ich die beiden Datensätze erhalte, die nur numerische Werte enthalten, der COUNT-Teil der Abfrage jedoch fehlschlägt. Ich sollte nur 1 auf der Zählung erhalten, aber stattdessen erhalte ich den folgenden Fehler:

ORA-01722: invalid number
01722. 00000 -  "invalid number"

Was mache ich falsch? Jede Hilfe wird sehr geschätzt.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage