代码之家  ›  专栏  ›  技术社区  ›  Charles B

android2.2(Froyo)SQLite缺少一些IN子句功能?

  •  0
  • Charles B  · 技术社区  · 16 年前

    例如,我使用子查询(返回字符串数据)作为IN子句的一部分,子查询部分似乎不再正常工作。我在下面附上了一个使用contacts数据库的SQL查询示例(显示的直接查询仅用于说明目的):

    SELECT _id FROM data WHERE display_name IN (SELECT display_name FROM contacts);
    

    在android2.1之前,这不是一个问题。但是,在更新之后,这将返回一个空记录集,除非我单独运行子查询,将每个结果值用单引号括起来,并将这些值直接附加到in子句中。

    我已经注意到在我正在处理的多个应用程序中功能的丧失,但是我应该注意到,当结果是数字而不是基于字符串时,它确实起作用。

    还有其他人遇到过这个问题吗?

    1 回复  |  直到 14 年前
        1
  •  0
  •   Bradley Smith    16 年前

    如果SQLite的行为确实发生了变化,您可以尝试使用 EXISTS 而不是操作员:

    SELECT _id FROM data WHERE EXISTS
        (SELECT * FROM contacts WHERE contacts.display_name = data.display_name)
    

    这消除了对 IN 接线员。