如何在sql中获得小数的分数

时间:2012-01-16 16:02:40

标签: .net sql sql-server-2008 tsql c#-4.0

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

3 个答案:

答案 0 :(得分:5)

使用FLOOR()

SELECT Value-FLOOR(Value)

这样做:

34.3287332 - 34 = 0.3287332

答案 1 :(得分:2)

我只需获取整个值,然后得到余数:

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

(可能有更有效的方法来获得剩余部分,但这很简单。)

虽然您也可以在SQL中执行此操作,但是当您想要使用LINQ to SQL或类似的东西获取值时,这可能不太好用 - 我更喜欢将值操作放在.NET代码而不是SQL中,除非它影响结果或表现。

答案 2 :(得分:2)

请注意,上面的FLOOR建议无法正确处理否定号码;你需要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)