В любом случае у меня есть запрос в следующей форме
select
(select count(*) from sometable where somecritiea) / ((select count(*) from sometable where somecritiea) + 0.000001)
from sometable
Я делю результат подсчета на результат подсчета, поэтому нули не являются проблемой.
Когда я запускаю это, я получаю «Обнаружена ошибка деления на ноль». Обратите внимание на +0,000001 в делителе.
Если я вставлю перечислитель (?) и делитель в новую таблицу, а затем сделаю тот же расчет, он будет работать, как и ожидалось.
select
(select count(*) from sometable where somecritiea) a/ ((select count(*) from sometable where somecritiea) + 0.000001) b
into testtable
from sometable
выберите a/b из тестовой таблицы
это возвращает ожидаемые результаты без ошибок.
Если я побегу
select * from testtable where b = 0
i get 0 records as expected.
Я действительно теряюсь здесь, это 5-минутная работа, которая превратилась в 5-часовой беспорядок.
я тоже пробовал
select *
((select count(*) from sometable where somecritiea) + 0.000001) divisor
from sometable
where divisor = 0
Это не возвращает никаких записей.
select (select count(*) from sometable where 1=2)/( select (select count(*) from sometable where 1=2) + 0.000001)
и не получил ошибку. Так что, если честно, я понятия не имею, что происходит... Но вы могли бы попробовать мой запрос, просто чтобы посмотреть, не проблема ли это? - person DigCamara   schedule 23.03.2013