Как использовать оператор SQLITE3 LIKE - PullRequest
2 голосов
/ 15 апреля 2010

У меня проблемы с выполнением динамического оператора LIKE в моем проекте: этот запрос работает как талисман и возвращает все элементы с 't' в названии:

const char *sql = "select * from bbc_ipad_v1_node where name LIKE '%%t%%'";

Когда я пытаюсь сделать это динамически, я не получаю ошибок, а просто пустой результат. Кажется, что значение равно нулю. Я пытаюсь связать строковое значение 's', которое выдает правильное значение

NSLog(@"bbc_ : search menu items from db based on: %@",s);
const char *sql = "select * from bbc_ipad_v1_node where name LIKE '%%?%%'";
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL) == SQLITE_OK) {
sqlite3_bind_text(statement, 1, [s UTF8String],-1,SQLITE_TRANSIENT);

Как связать это значение вместо использования:

const char *sql = "select * from bbc_ipad_v1_node where name LIKE '%%?%%'";

Ответы [ 2 ]

4 голосов
/ 15 апреля 2010

Только что нашел отличное объяснение на http://www.innerexception.com/2008/10/using-like-statement-in-sqlite-3-from.html

Я изменил следующие строки:

const char *sql = "select * from bbc_ipad_v1_node where name LIKE ?001";

и

NSString *searchInput = [NSString stringWithFormat:@"%@%%", s];
sqlite3_bind_text(statement, 1, [searchInput UTF8String],-1,SQLITE_TRANSIENT); 
1 голос
/ 22 января 2012

Вы можете просто сказать

const char *sql = "select * from bbc_ipad_v1_node where name LIKE '%t%'";

(обратите внимание на одно- % с)

...