Android 2.2(Froyo)SQLite缺少一些IN子句功能?

时间:2010-09-29 05:35:34

标签: android sqlite android-2.2-froyo in-clause

最近我将我的Nexus One更新为Froyo(2.2),我注意到SQLite的一些显着不同的行为。

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

如果SQLite的行为确实发生了变化,您可以尝试使用EXISTS运算符重新编写查询:

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

这消除了对IN运算符的依赖。

相关问题