【问题标题】: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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-04
      • 2011-09-15
      • 2023-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-29
      • 2020-10-04
      相关资源
      最近更新 更多