【问题标题】:Android "null" from SUM来自 SUM 的 Android“空”
【发布时间】:2014-01-28 15:20:57
【问题描述】:

我有一个从 2 个表中获取数据的查询。 它有效,但如果没有值,两个 SUM 将返回 NULL。 我怎样才能得到零呢?

SELECT SUM(g.field1), 
       SUM(g.field2), 
       c._id, 
       c.field_1, 
       c.field_3 
  FROM Table1 g 
  JOIN Tabel2 c 
 WHERE ( c.field_1 = g.field5 )

【问题讨论】:

  • 你想得到什么?
  • 任何错误? LogCat 怎么说?
  • 现在,如果 SUM (g.field1), SUM (g.field2) 为 0,我会得到“null”,而我会得到同样的结果。我希望我解释了
  • 没有错误,但查询结果为 null

标签: android sqlite


【解决方案1】:

您可以在您的字段上使用 IFNULL 语句,

this post

【讨论】:

    【解决方案2】:

    SQlite coalesce() 怎么样?

    coalesce() 函数返回其第一个非 NULL 参数的副本,如果所有参数均为 NULL,则返回 NULL。 Coalesce() 必须至少有 2 个参数。

    对于您可以使用的每个字段:

    coalesce(c.field_X,0)
    

    如果 c.field_X 为 NULL,查询将返回 0。

    请看http://www.sqlite.org/lang_corefunc.html

    【讨论】:

    • 好的,我使用coalesce (),所以如果(c.field_1 = g.field5) 为空,我仍然会运行查询SELECT c._id, c.field_1, c.field_3 FROM Tabel2 c 我该怎么做?
    • 我没关注你,你能换个说法吗? (c.field_1 = g.field5) 怎么可能为空?它要么是真要么是假,而不是 NULL。如果要检查是否相等,包括 NULL 检查,可以分解 IF 条件以显式处理 NULL vals。
    • Si può essere perché nella clausola WHERE faces g.field5 con c.field_1, quindi se c.field_1 è vuoto la query non dà risultati. A quel punto vorrei far eseguire solo SELECT c._id, c.field_1, c.field_3 FROM Tabel2 c
    • 让我们为其他人保留英语(我也是意大利人),但其他人不是:) CONDITION 不能为空(但条款可以如您所解释的那样)。如果其中一个值为空,您基本上想忽略该条件。您可以像这样修改 WHERE:WHERE (c.field_1 IS NULL OR g.field5 IS NULL OR c.field_1 = g.field5)
    • 不幸的是,即便如此,如果 c.field_1,返回 null。我可以用子查询替换它吗?但是当我运行光标时?
    【解决方案3】:

    如果没有非 NULL 值,SUM 函数将返回 NULL。

    要在没有输入值的情况下获得返回值 0,只需将 SUM 替换为 TOTAL 函数即可:

    SELECT TOTAL(g.field1), 
           TOTAL(g.field2), 
           ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-04
      • 2018-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-25
      • 1970-01-01
      • 2013-02-04
      相关资源
      最近更新 更多