2017-08-14 69 views
0

我有簡單的使用1個表的select語句。其中一列取該列的值,將其分開,然後在其後進行模運算,但最終得到一個小數。爲什麼模不工作?Modulo似乎不能在SQL Server 2012中工作

SELECT 
    (numeric_datatype_column/10000) % 100 
FROM 
    table a 

我所有的數值都以小數形式出現。模數不能給我一個整數嗎?

+1

請舉例說明。我懷疑模塊結果是正確的,但是你看到整數部分之後0.00000。 –

+2

如果'numeric_datatype_column'有小數,做一個mod也會返回小數。 'Select(123.1234/10)%100'產生'12.3123400' – Siyual

+0

你爲什麼期望它是一個整數? '5.1%2.5'返回'0.1'。這是劃分後的正確剩餘部分。 –

回答

2

模數不能給我一個整數嗎?

號的modulo返回分割後的值的餘數。如果你的值是一個十進制值,模數也會返回小數部分。它不被截斷。

作爲工作示例:

Select (123.1234/10) % 5 

2.3123400

如果你想刪除的小數,你可以將結果轉換爲INT然後做模:

Select Convert(Int, (123.1234/10)) % 5