2012-01-16 8 views
1

に小数点以下の端数を得ることができ、私は小数点値34.3287332は、どのように私は0.3287332のような値の一部を取得することができましたしてください(私は文字列にそれを変換し、端数を得ることができますいずれかの助け。しかし、どのように私は、SQL

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

(そこ残りの部分を取得するためのより効率的な方法であるが、これは非常に単純であることがあります。私は、私はちょうど全体の値を取得した後、残りを得るでしょう

答えて

2

)する必要がいけません。 )

あなたが同様にSQLでこれを行うことができますが、それはときあまりうまく機能しそうですあなたは、SQLまたは類似のものにLINQと値を取得したい - それは結果やパフォーマンスに影響を与えない限り、私は、.NETコードではなく、SQLで値操作を置くことを好みます。

+0

SQLの例を教えていただけますか? – Aroor

+0

@ArooranS:あなたはSQLのアプローチで他の答えを得ました。なぜ私は一般的にC#コードでそれを行うのか説明しました。 –

5

使用FLOOR()

SELECT Value-FLOOR(Value) 

これが行います:FLOORの提案は上記数字に対して正しく動作しないこと

34.3287332 - 34 = 0.3287332 
+1

新しい溶液を1 SELECT(34.3287332)%1によって分割するモジュール演算子を使用し、私は好き – Aroor

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)