Подстановочный знак не работает в 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 '%' || ? || '%'"
Обратите внимание, что "%" и "_" в значении по-прежнему работают в качестве подстановочных знаков.