在我的query
中,我需要获得百分比低于50%的记录。
存储百分比值的字段定义为char(3)
。
例如,我看到一些数据被定义为' .35'
在我的查询中,我使用了一个条件where mypercentagevalue < '.50'
,但它不起作用,因为我注意到该字段还具有诸如&#39; 85&#39;,&#39; 95&#39;之类的值, &#39; 90&#39;等等
我可以用来比较所有情况
谢谢
答案 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