2012-01-16 91 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)