sql float column дополняет некоторую дробь и поэтому граничные условия не выполняются - PullRequest
0 голосов
/ 24 февраля 2012

У меня странная проблема с типом данных с плавающей точкой.Пожалуйста, найдите скриншот ниже.

enter image description here

Запрос 1 дает запись.Где, как Query 2 не дает записи.netbk_amt имеет тип float в таблице.Кроме того, когда я изменяю 1-й запрос на >= (convert(float, 100001)), он не дает никаких записей.

Похоже, что значение> 1000000, но <1000001. Но в таблице оно отображается как 1000000. </p>

Пожалуйста, помогите мне найти, что пошло не так с этим запросом.

Запросы:

select co_id, SUM(netbk_amt) from its_deal_sum where co_id = 19237 
group by co_id
having convert(float,SUM(netbk_amt)) >= convert(float,1000000)

select co_id, SUM(netbk_amt) from its_deal_sum where co_id = 19237 
group by co_id
having convert(float,SUM(netbk_amt)) <= convert(float,1000000)

Я вроде как сделал это, как предложено в комментариях,

select co_id, SUM(netbk_amt) from its_deal_sum where co_id = 19237 group by co_id having convert(money,SUM(netbk_amt)) = convert(money,1000000) 

как временное исправление.Но ищем надежное исправление с поплавком, игнорируя дроби.

1 Ответ

1 голос
/ 24 февраля 2012

Если

игнорируя дроби

- это все что вы хотите - это очень просто.

DECLARE @f float=2.000000000001
SELECT @f,FLOOR(@f)

Результат:

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