2013-11-01 70 views
11

每當我想舍入小數點後兩位時,它不需要舍入零... 我怎樣才能將它舍入到小數點後兩位;會給我92.00,而不是隻有92?四捨五入到SQL中的2位小數

SELECT ROUND(COLUMN_NAME,2) FROM .... 

它給我

COLUMN_NAME 
92 

,但我想

COLUMN_NAME 
92.00 

我用TO_CHAR和它的工作

ROUND(TO_CHAR(COLUMN_NAME),2) 

謝謝你們!

+0

COLUMN_NAME的數據類型是什麼? – IniTech

+0

列的類型是什麼? –

+0

COLUMN_NAME的數據類型必須爲float [()] ...... –

回答

16

您可以嘗試TO_CHAR函數將結果轉換

例如

SELECT TO_CHAR(92, '99.99') AS RES FROM DUAL 

SELECT TO_CHAR(92.258, '99.99') AS RES FROM DUAL 

希望它可以幫助

+3

此答案只允許在小數點左邊還有2位數字。在OP提供的具體例子中,只有兩位小數;然而,爲了使這個答案更爲廣泛適用,如果解決了小數點左邊的任何數字和恰好兩個右邊的數字,將會有所幫助。例如,如果數據包含123.456或1234567894.83748等 – kralco626

4

嘗試使用與該格式選項COLUMN命令:

COLUMN COLUMN_NAME FORMAT 99.99 
SELECT COLUMN_NAME FROM .... 
+0

哇好東西......從來沒有聽說過COLUMN COLUMN_NAME FORMAT!謝謝 – Manual

+0

上述舍入問題也適用於此解決方案 – alzaimar

4

儘量避免在您的查詢格式。您應該以原始格式返回數據,並讓接收應用程序(例如報告服務或最終用戶應用程序)執行格式設置,即四捨五入等。

格式化服務器中的數據會使您難以(甚至不可能)進一步處理數據。您通常需要導出表或進行一些彙總,例如總和,平均值等。由於數字以字符串形式出現(varchar),因此通常沒有簡單的方法可以進一步處理它們。一些報告設計者甚至會拒絕提供彙總這些「數字」的選項。

此外,最終用戶將看到國家特定格式的服務器,而不是他自己的PC。

另外,考慮舍入問題。如果您將服務器中的值四捨五入,然後仍然進行一些計算(假設客戶端能夠將數字字符串還原爲數字),則最終會得到錯誤的結果。