我試圖運行此查詢,但它似乎沒有在數學計算後正確格式化數字。比例尺應該是2,但不會像應該那樣顯示。用選擇語句中的比例返回分號的結果
SELECT 30/60 as Diff FROM Table
這將返回爲0
SELECT Convert(Numeric(8,2), 30/60) as Diff FROM Table
這將返回爲0.00
如何獲得需要這個返回0.50
?
我試圖運行此查詢,但它似乎沒有在數學計算後正確格式化數字。比例尺應該是2,但不會像應該那樣顯示。用選擇語句中的比例返回分號的結果
SELECT 30/60 as Diff FROM Table
這將返回爲0
SELECT Convert(Numeric(8,2), 30/60) as Diff FROM Table
這將返回爲0.00
如何獲得需要這個返回0.50
?
你可以嘗試以下方法和實現它的方法很少。使用一個變量,或者只是在字段本身上執行CAST
,CONVERT
。
SELECT (CAST(30 AS DECIMAL(8,2))/CAST(60 AS DECIMAL(8,2))) as Diff FROM Table
SELECT (CAST(30/60) AS DECIMAL(8,2)) as Diff FROM Table
SELECT (30/60.0) as Diff FROM Table;
SELECT CONVERT(DECIMAL(8,2), 30/60.0) as Diff FROM Table
在進行除法或分割實數而不是整數之前轉換爲數字。進行整數運算時,會丟棄任何小數部分。分數下降後轉換對你沒有任何好處。
SELECT CONVERT(NUMERIC(8,2),30.0/60.0) AS DIFF FROM TABLE
,或者如果選擇列,而不是用數字
SELECT CONVERT(NUMERIC(8,2),columnA)/CONVERT(NUMERIC(8,2),columnB) AS DIFF FROM TABLE
(轉換都只是要確定劃分是根據我們想要的規則來執行)
謝謝您的回答,但你能舉個例子嗎? –
@ZeeTee我更新了一個例子 – tvanfosson
@tvanfosson嗨,感謝您注意到前面的錯字:)我估計是來回轉換。 – bonCodigo