В SQLite3, как я могу сделать SQL-экранирование в предложении LIKE? - PullRequest
4 голосов
/ 03 сентября 2010

Я бы хотел выполнить запрос LIKE в sqlite3, чтобы пользовательский ввод был безопасно экранирован.В принципе, я хочу сделать что-то вроде этого:

char* query = "SELECT * FROM table WHERE LOWER(notes) LIKE '%?%'";
sqlite3_stmt* statement;
sqlite3_prepare_v2( database, query, -1, &statement, NULL );

Но что?не соблюдается, когда внутри выражения LIKE.Кто-нибудь знает, как это сделать?

1 Ответ

6 голосов
/ 03 сентября 2010
char* query = "SELECT * FROM table WHERE LOWER(notes) LIKE '%' || ? || '%'";

Но я рекомендую вам использовать FTS3 для полнотекстового поиска, потому что ваши запросы будут выполняться в в сотнях раз быстрее, чем при использовании запросов brute-force LIKE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...