SQLite格式编号始终为2位小数

ale*_*oot 31 sql sqlite

我在SQLite数据库中有一些包含FLOAT列类型的表,现在我想用Query检索值并将float字段格式化为2个小数位,到目前为止我已经写了像这样的查询:

SELECT ROUND(floatField,2) AD field FROM table
Run Code Online (Sandbox Code Playgroud)

这将返回如下结果集:

3.56
----
2.4
----
4.78
----
3
Run Code Online (Sandbox Code Playgroud)

我想格式化结果始终有两个小数位,所以:

3.56
----
2.40
----
4.78
----
3.00
Run Code Online (Sandbox Code Playgroud)

是否可以直接从SQL查询格式化2个小数位?如何在SQLite中完成?

谢谢.

小智 54

您可以使用printf:

SELECT printf("%.2f", floatField) AS field FROM table;
Run Code Online (Sandbox Code Playgroud)

例如:

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

  • 仅适用于SQLite 3.8.3或更高版本(2014年2月发布) (14认同)
  • 就像@swdev 所说的那样,此功能现在可在许多 Android 设备中使用,这可能会导致应用在不受支持的设备上崩溃。我通过经验发现了这一点,在没有最新更新的 GAlaxy SIII 上进行测试(这很常见,顺便说一句)。 (2认同)

App*_*234 0

由于 sqlite 内部存储数字的方式,

你可能想要这样的东西

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

  • 不起作用,数字也可能高于 10,所以我可能有 100.4、1290.7,... (2认同)