2017-08-14 3 views
0

1つのテーブルを使用する単純なSELECTステートメントがあります。列の1つはその列の値を取り、それを割り、その後はモジュロを行いますが、私は10進数で終わります。モジュロが機能しないのはなぜですか?ModuloがSQL Server 2012で動作していないようです

SELECT 
    (numeric_datatype_column/10000) % 100 
FROM 
    table a 

私のすべての価値は小数点以下に切り捨てられています。モジュロは整数を与えてはいけませんか?

+1

例を示してください。私は、モジュールの結果が正しいと思われます。整数部分の後に.00000が表示されています。 –

+2

'numeric_datatype_column'に小数点がある場合、modを実行すると小数点も返されます。 '(123.1234/10)%100'を選択すると' 12.3123400'が返されます – Siyual

+0

なぜそれが整数であると思いますか? '5.1%2.5'は' 0.1'を返します。これは除算後の正しい余りです。 –

答えて

2

モジュロで整数を指定しないでください。

modulo戻り除算後の値の残り。あなたの値が10進数値であれば、モジュロは小数成分も返します。切り捨てられません。あなたは小数を削除したい場合は、あなたがINTに結果を変換して、剰余行うことができます

Select (123.1234/10) % 5 

2.3123400

を実施例として

Select Convert(Int, (123.1234/10)) % 5 
関連する問題