2012-02-05 339 views
20

我在SQLite數據庫中有一些包含FLOAT列類型的表,現在我想用Query來檢索該值,並將浮點字段的格式設置爲2位小數,到目前爲止我有我寫的查詢像這樣的:帶有2位小數位的SQLite格式號總是

SELECT ROUND(floatField,2) AD field FROM table 

這返回一個結果類似以下內容:

3.56 
---- 
2.4 
---- 
4.78 
---- 
3 

我想保留兩位小數始終格式化結果,所以:

3.56 
---- 
2.40 
---- 
4.78 
---- 
3.00 

是否可以直接從SQL查詢中直接格式化爲2位小數?它如何在SQLite中完成?

謝謝。

+0

你找到一個解決辦法? – 2015-04-06 03:51:13

回答

0

由於內部的方式sqlite的門店數量,

你可能想是這樣的

select case when substr(num,length(ROUND(floatField,2))-1,1) = "." then num || "0" else num end from table; 
+2

不起作用,數字也可能超過10,所以我可以有100.4,1290.7,... – aleroot 2012-02-05 12:57:33

+0

指數表示法也會導致失敗。 – swdev 2014-05-12 23:26:59

-1

你可以嘗試選擇STR(12345.6789,12,3)

顯示:「12345.679 '(3個空格,5個數字12345,一個小數點和三個小數位(679) - 如果必須截斷,則循環(除非整數部分對於總大小而言太大,在這種情況下會顯示星號)

總共12個字符,小數點右邊3。

+1

不起作用。 SQLite沒有STR()函數。 (SQLite!= SQL Server) – swdev 2014-05-12 23:25:21

37

您可以使用printf爲:

SELECT printf("%.2f", floatField) AS field FROM table; 

例如:

sqlite> SELECT printf("%.2f", floatField) AS field FROM mytable; 
3.56 
2.40 
4.78 
3.00 
sqlite> 
+11

只適用於SQLite 3.8.3或更高版本(2014年2月發佈) – swdev 2014-05-12 23:12:56

+1

像@swdev聲明的那樣,此功能現在可用於許多Android設備,這可能會導致不支持的設備上的應用程序崩潰。我根據經驗發現了這個問題,在沒有最新更新的GAlaxy SIII上測試(這很常見,順便說一下)。 – AlxDroidDev 2016-07-18 12:02:26

+0

同樣的問題在這裏,我需要支持一些舊設備,我不能使用printf – 2016-08-22 22:44:09