2012-01-16 51 views
1

我有一个十进制值34.3287332我怎么能得到像.3287332这样的值的分数,请任何一个帮助(我可以将其转换为字符串,并获得分数。但我不需要)我怎样才能得到小数部分在sql

回答

2

我只想取整数值,然后得到的余:

decimal total = /* get value from database */; 
decimal fraction = decimal.Remainder(total, 1m); 

(有可能是一种更有效的方式来获得其余部分,但是这是非常简单的。 )

虽然你也可以在SQL中做到这一点,但这可能不太适用于你想用LINQ to SQL或任何类似的东西获取值 - 我宁愿将值操作放在.NET代码中,而不是SQL中,除非它影响结果或性能。

+0

感谢您的回复,你可以给我例子在SQL? – Aroor 2012-01-16 17:11:13

+0

@ArooranS:你已经有了SQL方法的其他答案。我已经解释了为什么我通常会用C#代码来完成它。 – 2012-01-16 17:12:42

5

使用FLOOR()

SELECT Value-FLOOR(Value) 

这样做:

34.3287332 - 34 = 0.3287332 
+1

我喜欢一个新的解决方案,使用模块运算符除以1 SELECT(34.3287332)%1 – Aroor 2012-01-16 17:09:45

2

注意地板上面的建议,将无法正常进行号工作;你需要做ABS(my_float_value) - FLOOR(ABS(my_float_value))以得到正确的答案。

如果你发现自己在使用SQLite后端,你会发现它没有FLOOR函数,并且“my_float_value%1”技巧也是无效的。然后你可以申请一个CAST来获得相同的功能: ABS(my_float_value) - CAST(ABS(my_float_value) AS INTEGER)