我有一个这样的专栏

value
50.67
60.004
20.0
30.2
14.0

我需要像这样展示它

value
50.67
60.004
20
30.2
14

因此,数字20.014.0显示为2014,因为它们本质上是整数.

有可能实现吗?

推荐答案

有可能实现吗?

从SQLite的Angular 来看,您不需要执行任何操作;如下所示:

DROP TABLE IF EXISTS mytable;
CREATE TABLE IF NOT EXISTS mytable (v1 REAL, v2 TEXT, v3 NUMERIC, v4 blah_blah);
INSERT INTO mytable VALUES 
    (50.67,50.67,50.67,50.67),
    (60.004,60.004,60.004,60.004),
    (20.0,20.0,20.0,20.0),
    (30.2,30.2,30.2,30.2),
    (14.0,14.0,14.0,14.0),
    ('20.0','20.0','20.0','20.0');
SELECT * FROM mytable;
DROP TABLE IF EXISTS mytable;

这将导致:

enter image description here

  • 对于所有典型的列类型(类型blah_blah除外,它将解析为数字列亲和性).

However最终如何从输出中检索结果(例如,Android的getString将获得如上所述的结果,但getDouble将以双精度形式获得,无论该函数的默认精度是多少)可能/确实很重要.

So you probably want to retrieve the value as if it were a String.

您可以使用类似以下内容:-

SELECT CASE WHEN (v1 - CAST(CAST(v1 AS INTEGER) AS REAL)) = 0 THEN CAST(v1 AS INTEGER) ELSE v1 END AS v1 FROM mytable;
  • 请注意,只显示一列

例如:

enter image description here

它复制了SQLite的实际操作,但是您仍然受制于从结果输出中检索数据的函数(S)(同样,作为字符串类型检索应该得到原样的输出).

一句警告再精确的话.如果我们采用第二个基于SQL的解决方案,您可能必须考虑存储精确小数值的完全精度/不准确性/无法.以下说明了不应做的事情:

SELECT CAST(v1 AS INTEGER)|| CASE WHEN (v1 % 1)  > 0 THEN '.'||v1 % 1 ELSE '' END, (v1 - CAST(CAST(v1 AS INTEGER) AS REAL)) AS warning  FROM mytable;

这产生了两个部分(整数部分和尾数部分):

  • enter image description here

  • 100

Sql相关问答推荐

如何使用LinkHouse群组ArrayInsertAt以零作为位置参数

SQL查询以创建手头的流动余额?

如何从上一个值减go 值

用于动态查询情况的存储过程常识模式

删除事务中的本地临时表

了解放置时的连接

仅当交叉应用返回单值时才更新记录

如何为该查询编写正确分区依据

Netezza SQL:判断两个表是否相同

每个分组最多 Select 最后 2 个值并并排显示它们

如何从postgresql中的项目映射(关联数组)设置值?

为什么在事务中未被后续使用的CTE执行SELECT...FOR UPDATE无效?

SQL - 只需要 GROUP BY SELECT 的一列

更新表 A,然后将新值插入表 B(包含更新内容的历史日志(log))

如何在 SQL Server 中将 -13422.8450 舍入到 -13422.84

连续期间的缺口

在 MySql 数据库中的两个日期之间搜索

如何跨行合并以删除 SQL 中的空值?

SQL Server Where 条件

snowflake插入覆盖行为