【问题标题】:SQLite How to handle Negative numbers with Negative Sign at the endSQLite如何处理最后带有负号的负数
【发布时间】:2019-04-06 03:48:06
【问题描述】:
我们以前从未经历过这种情况。我们正在导入包含数字列的制表符分隔的 TXT 文件。负数在数字后面而不是前面有指示符(例如 550.00- 而不是 -550.00)。
我们正在使用 SQLite Expert Professional。在查看表中的导入结果时,后面带负号的任何数字都被转换为前面的负号,但是这些单元格中的每个单元格都以蓝色突出显示(我们不确定 SQLite Expert 为什么这样做,但假设它有意义)。此外,在查询和求和时,它们会被忽略,导致结果值高于预期。
字段类型为 FLOAT 和 DECIMAL
我们用谷歌搜索,找不到任何关于负号位置的结果。
感谢任何有关如何处理此问题的帮助。
【问题讨论】:
标签:
sqlite
negative-number
【解决方案1】:
UPDATE 查询可以通过在将负号替换为空后从 0 中减去不正确的值来更改值。
更新可能基于:-
UPDATE vneg SET iv = (0 - replace(iv,'-','')) WHERE instr(iv,'-') > 1;
例如:-
DROP TABLE IF EXISTS vneg;
CREATE TABLE IF NOT EXISTS vneg (iv);
INSERT INTO vneg VALUES ('100.35'),('133.44-'),('25.453-');
SELECT * FROM vneg; -- First Result (before)
UPDATE vneg SET iv = (0 - replace(iv,'-','')) WHERE instr(iv,'-') > 1;
SELECT * FROM vneg; -- Second result (after)
更新前:-
更新后:-
然后使用SELECT sum(iv) AS summed FROM vneg; 结果:-
-58.543