В Android 2.2 (Froyo) SQLite отсутствует функциональность предложения IN? - PullRequest
0 голосов
/ 29 сентября 2010

Недавно я обновил свой 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 голосов
/ 29 сентября 2010

Если поведение SQLite действительно изменилось, вы можете попробовать переписать запрос, используя вместо этого оператор EXISTS:

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

Это удаляет зависимость от оператора IN.

...