Как определяется столбец?Если это поле varchar, то это не число (или оно хранится как единое целое).Oracle может выполнить преобразование для вас (например, выбрать * из someTable, где charField = 0), но оно будет возвращать только те строки, в которых преобразование выполнено и возможно.Это также далеко от идеальной ситуации с точки зрения производительности.
Итак, если вы хотите провести сравнение чисел и рассматривать этот столбец как число, возможно, его следует определить как число?
То естьвот что вы можете сделать:
create or replace function myToNumber(i_val in varchar2) return number is
v_num number;
begin
begin
select to_number(i_val) into v_num from dual;
exception
when invalid_number then
return null;
end;
return v_num;
end;
Вы также можете включить другие параметры, которые имеет обычный to_number.Используйте так:
select * from someTable where myToNumber(someCharField) > 0;
Он не вернет ни одной строки, которую Oracle считает недействительным числом.
Приветствия.