Подстановочный знак не работает в SQLite

Я продолжаю пытаться использовать подстановочные знаки в поиске в приложениях для Android и продолжаю сталкиваться с ошибками.

Я выполняю поиск в моем приложении, используя строку ниже:

Cursor c_name = b.query("namedrxns", new String[] { "_id", "name" },
              "name LIKE %?%", new String[] { query }, null, null, null);

когда я использую name LIKE %?% или же name=%?% Я получаю "почти"% ": синтаксическая ошибка: во время компиляции: SELECT _id, имя FROM namedrxns ГДЕ имя =%?%" Ошибка.

но с name LIKE '%?%' или же name='%?%' Вместо этого я получаю "индекс привязки или столбца вне диапазона: дескриптор 0x40cb70"

Может кто-нибудь сказать мне, что я делаю не так?

Спасибо!

2 ответа

Решение

Добавить % к query параметр.

IE:

Cursor c_name = b.query("namedrxns", new String[] { "_id", "name" },
          "name LIKE ?", new String[] { "%"+query+"%" }, null, null, null);

Как уже сказал Томас Мюллер, обратите внимание, что % а также _ в пределах значения по-прежнему работают подстановочные знаки.

Следующее должно работать (но я не проверял это с SQLite):

"name LIKE '%' || ? || '%'"

Обратите внимание, что "%" и "_" в значении по-прежнему работают в качестве подстановочных знаков.

Другие вопросы по тегам