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;
2条答案
按热度按时间3qpi33ja1#
有可能实现吗?.
从SQLite的Angular 来看,您不需要做任何事情;如以下所示:
结果是:
然而您最终如何从输出中检索结果(例如,android的getString将得到如上所述,但getDouble将得到一个double,无论该函数的默认精度是什么)可以/确实重要。
因此,您可能希望像String一样检索值。
*以上假设存储的值永远不会为NULL。可以使用
coalesce
或ifnull
SQLite内置函数处理空值-请参见https://www.sqlite.org/lang_corefunc.html#coalesce和/或https://www.sqlite.org/lang_corefunc.html#ifnull你可以使用类似的东西:
例如:-
它复制了SQLite实际上所做的事情,但是您仍然要受从结果输出中检索数据的函数的支配(同样,作为String类型的检索应该按原样获得输出)。
一句话的警告重新精确。如果我们考虑第二个基于SQL的解决方案的关键,你可能必须考虑完整的精度/不准确性/无法存储精确的十进制值。以下是不应该做的事情:
这将导致两个部分(整数部分和尾数):
6jjcrrmo2#
使用
format()
function的%g
说明符很容易做到这一点:需要注意的是,真正大的数字,或者接近0的数字最终将使用科学计数法显示。不过,这里的示例数字并不是问题。