SQLite format number with 2 decimal places always

2019-02-02 23:26发布

问题:

I have some tables in a SQLite database that contains FLOAT column type, now i want to retrieve the value with a Query and format the float field always with 2 decimal places, so far i have written i query like this one :

SELECT ROUND(floatField,2) AD field FROM table

this return a resultset like the the following :

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

I want to format the result always with two decimal places, so :

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

Is it possible to format always with 2 decimal places directly from the SQL Query ? How can it be done in SQLite ?

Thanks.

回答1:

You can use printf as:

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

for example:

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


回答2:

Due to the way sqlite stores numbers internally,

You probably want something like this

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


回答3:

You could try Select Str(12345.6789, 12, 3)

displays: ' 12345.679' ( 3 spaces, 5 digits 12345, a decimal point, and three decimal digits (679). - it rounds if it has to truncate, (unless the integer part is too large for the total size, in which case asterisks are displayed instead.)

for a Total of 12 characters, with 3 to the right of decimal point.