2017-02-14 5 views
0

Я хочу, чтобы запросить таблицу, используя double precision колонку, но когда я пытаюсьИспользование двойной точности в запросе

select * from foo where bar > 2

я не получил никаких результатов.

select * from foo where bar < 2

ничего слишком! Когда я пытаюсь

select bar from foo

Я могу видеть все записи там. Некоторые значения, как 1.31744579794415e-08, 4.82082769315891e-08 и т.д.

bar < 2.0 Уже попробовал и bar < 2.0::float8

Что я делаю неправильно?

+0

oops! Я думаю, что здесь не лучшее место. Может кто-то переместить это в DBA SE? –

ответ

1

Это решение работает?

select * from foo where round(bar::numeric, 2) < 2 

Но я удивлен, так как все эти утверждения верны:

select round(1.31744579794415e-08::numeric, 2) < 2 
select 1.31744579794415e-08::numeric < 2 
select 1.31744579794415e-08 < 2 

Вы уверены, что нет ничего другого?

+0

Ну, я использую слишком малое число. С помощью этого инструмента http://www.calculatorsoup.com/calculators/math/scientific-notation-converter.php Я обнаружил, что 2 десятичных знака недостаточно для сравнения чисел. В моем примере «1.31744579794415e-08' actualy -« 0.0000000131744579794415 »и очень далеко от« 2 »в моем запросе. Я думаю, мне понадобится «round (bar :: numeric, 10)», чтобы начать разговор. –

+0

Я только что отредактировал свой ответ. – devoh

+0

Без использования вашего решения (тип cast) У меня нет никаких результатов. Я тоже удивлен, но однажды мудрый монах сказал: «Если он работает, тогда больше не трогайся». –

Смежные вопросы