ORACLE - Выбрать количество в подзапросе
У меня есть таблица Oracle, которая содержит набор диапазонов (RangeA и RangeB). Эти столбцы varchar, так как они могут содержать как числовые, так и буквенно-цифровые значения, как в следующем примере:
ID|RangeA|RangeB
1 | 10 | 20
2 | 21 | 30
3 | AB50 | AB70
4 | AB80 | AB90
Мне нужно сделать запрос, который возвращает только записи, которые имеют числовые значения, и выполнить подсчет по этому запросу. До сих пор я пытался сделать это с двумя разными запросами без какой-либо удачи:
Запрос 1:
SELECT COUNT(*) FROM (
SELECT RangeA, RangeB FROM table R
WHERE upper(R.RangeA) = lower(R.RangeA)
) A
WHERE TO_NUMBER(A.RangeA) <= 10
Запрос 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
Подзапрос работает нормально, так как я получаю две записи, которые имеют только числовые значения, но часть запроса COUNT не выполняется. Я должен получить только 1 на счету, но вместо этого я получаю следующую ошибку:
ORA-01722: invalid number
01722. 00000 - "invalid number"
Что я делаю неправильно? Буду признателен за любую оказанную помощь.