0

最近、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 句に直接追加しない限り、空のレコード セットが返されます。

私が取り組んでいる複数のアプリケーションでこの機能が失われていることに気付きましたが、結果が文字列ベースではなく数値である場合に機能するように見えることに注意してください。

他の誰かがこの問題に遭遇しましたか?

4

1 に答える 1

0

EXISTSSQLite の動作が実際に変更された場合は、代わりに演算子を使用してクエリを書き直すことができます。

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

INこれにより、オペレーターへの依存がなくなります。

于 2010-09-29T05:54:02.957 に答える