我有一个这样的专栏
value
50.67
60.004
20.0
30.2
14.0
我需要像这样展示它
value
50.67
60.004
20
30.2
14
因此,数字20.0
和14.0
显示为20
和14
,因为它们本质上是整数.
有可能实现吗?
我有一个这样的专栏
value
50.67
60.004
20.0
30.2
14.0
我需要像这样展示它
value
50.67
60.004
20
30.2
14
因此,数字20.0
和14.0
显示为20
和14
,因为它们本质上是整数.
有可能实现吗?
有可能实现吗?
从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;
这将导致:
However最终如何从输出中检索结果(例如,Android的getString将获得如上所述的结果,但getDouble将以双精度形式获得,无论该函数的默认精度是多少)可能/确实很重要.
So you probably want to retrieve the value as if it were a String.个
The above assumes that the values stored will never be NULL. Handling nulls can be handled using the 102 or 103 SQLite built-in functions-见https://www.sqlite.org/lang_corefunc.html#coalesce和/或https://www.sqlite.org/lang_corefunc.html#ifnull
您可能希望参考https://www.sqlite.org/datatype3.html#type_affinity(也许还有整个文档)来获得更详细的解释.
您可以使用类似以下内容:-
SELECT CASE WHEN (v1 - CAST(CAST(v1 AS INTEGER) AS REAL)) = 0 THEN CAST(v1 AS INTEGER) ELSE v1 END AS v1 FROM mytable;
例如:
它复制了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;
这产生了两个部分(整数部分和尾数部分):