t-sql:比较小数的最佳方法是什么

时间:2014-04-21 14:54:39

标签: sql sql-server

在我的query中,我需要获得百分比低于50%的记录。

存储百分比值的字段定义为char(3)。 例如,我看到一些数据被定义为' .35'

在我的查询中,我使用了一个条件where mypercentagevalue < '.50',但它不起作用,因为我注意到该字段还具有诸如&#39; 85&#39;,&#39; 95&#39;之类的值, &#39; 90&#39;等等

我可以用来比较所有情况

谢谢

2 个答案:

答案 0 :(得分:0)

Eugene - 由于此字段定义为char(3),请执行以下操作:

首先 - 确保在字段中有一个带有case语句和IsNumeric函数的数字。然后把它投到一个数字。

select * from [dbo].[YourTable]
where cast(case isnumeric([YourField]) when 0 then 0 else [YourField] end as numeric(9,2)) < .5

整数(85,90等)将显示在结果中,直到您正确格式化数据。

答案 1 :(得分:0)

我同意@ Eugene.it和@JNK但是如果由于某种原因(我不能想到一个好的)你无法修复数据,那么你可以使用下面的内容。< / p>

WHERE .5 > CASE WHEN CAST(mypercentagevalue as decimal (6,2)) >= 1 THEN CAST(mypercentagevalue as decimal (6,2))/100 ELSE CAST(mypercentagevalue as decimal (6,2)) END

我会做类似以下的事情。

UPDATE #temp
SET mypercentagevalue = CASE WHEN CAST(mypercentagevalue as decimal (6,2)) >= 1 THEN
                                  CAST(mypercentagevalue as decimal (6,2))/100 
                                  ELSE CAST(mypercentagevalue as decimal (6,2)) END