конвертировать varchar2 в число в оракуле - PullRequest
0 голосов
/ 29 октября 2019

Привет, у меня есть следующий столбец

Result
______
1.5
0.27
0.25
NEGATIVE
5.33
0.15
PROBLEM
NEGATIVE
POSITIVE
POSITIVE

мне нужно посчитать, сколько отрицательных, когда результат меньше 1, также отрицателен, когда я использую функцию TO_NUMBER, я получаю ошибку ORA-01722 "Недопустимое число«

Ответы [ 2 ]

0 голосов
/ 29 октября 2019

В oracle версии 12.2 и выше вы можете использовать on conversion error с функцией to_number следующим образом:

Select 
    Count(1) as result
From your_table
Where your_column = 'NEGATIVE' 
Or to_number(your_column default 1 on conversion error) < 1 ;

Cheers !!

0 голосов
/ 29 октября 2019

'NEGATIVE' - это строка, а не число, поэтому ORA-01722 при попытке превратить ее в число. Таким образом, вы должны справиться с этими событиями. Что-то вроде:

select count(
           case when result = 'NEGATIVE' then 1
                when result != 'PROBLEM' and to_number(result) < 1 then 1
                else null
           end) as tot_negatives
from your_table;

Строго говоря, 0,15 не является отрицательным, потому что оно больше нуля, но я реализовал ваше определение.

Обратите внимание, что у вас нетлюбые другие не числовые строки в вашем столбце, кроме «ОТРИЦАТЕЛЬНЫЙ» и «ПРОБЛЕМА». Если есть другие, то вам тоже нужно с ними справиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...