Sqlite связывание внутри строкового литерала - PullRequest
23 голосов
/ 09 июля 2009

Использование sqlite3, если мой запрос

SELECT * FROM table WHERE title LIKE '%x%'

Он будет соответствовать строкам, которые содержат x. Я хочу сделать x привязываемым параметром, например:

SELECT * FROM table WHERE title LIKE '%x?%'

Однако это не работает, поскольку '' образует строковый литерал. Есть ли какой-нибудь способ избежать ? внутри литерала? Я понимаю, что мог бы создать привязываемый параметр, содержащий %, а затем использовать

SELECT * FROM table WHERE title LIKE ?

но это перекладывает ответственность на мой код с точки зрения обработки SQL-инъекций, а не на интерфейс связывания. Есть ли лучшее решение для этого?

1 Ответ

41 голосов
/ 09 июля 2009
SELECT * FROM table WHERE title LIKE '%' || ? || '%';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...