Запрос FMDB работает неправильно с LIKE

Я использую FMDB, который является оболочкой для SQLite. http://github.com/ccgus/fmdb

Вот моя строка запроса:

FMResultSet *athlete = [db executeQuery:@"SELECT * FROM athletes WHERE athlete_name LIKE ?", search_text];

Используя это, я могу получить результат, если введу точное имя спортсмена. Но я пытаюсь использовать LIKE, чтобы искать по имени. Но когда я добавляю%?% Вместо просто? ... ничего не возвращается. И ошибок нет.

Кто-нибудь сталкивался с этим раньше и знает, что я делаю не так?

Спасибо всем!


person TheTC    schedule 25.01.2012    source источник
comment
Я бы посоветовал предоставить ссылку на FMDB для тех, кто с ней не знаком   -  person bshirley    schedule 25.01.2012


Ответы (1)


Подстановочные знаки (%) должны быть частью подставляемой переменной, а не строкой запроса:

FMResultSet *rs = [db executeQuery:@"SELECT * FROM athletes WHERE athlete_name LIKE ?",
                  [NSString stringWithFormat:@"%%%@%%", search_text]];
person omz    schedule 25.01.2012
comment
А, ладно ... большое вам спасибо. Сегодня я сплю наполовину, поэтому я предположил, что упускаю что-то простое. знак равно - person TheTC; 25.01.2012
comment
Мне сложно заставить это работать. Есть ли альтернативный синтаксис? У меня заканчиваются идеи. - person Echilon; 27.01.2012
comment
Ах здорово !! Спасибо @omz. Я новичок в mysql, не могли бы вы объяснить, что означает %%% @ %%? Я получаю% @ ... но каково значение других%? А? Я предполагаю? является sql-эквивалентом% @, но я все равно получаю от него это предупреждение: Data argument not used by format string - person crewshin; 05.08.2012
comment
% - это подстановочный знак для оператора SQL LIKE. Думайте об этом как о заполнителе, который позволяет вам сопоставлять части строки. Поскольку % имеет особое значение в строках формата, каждая из них удваивается, чтобы указать, что мне нужен фактический символ процента, а не заполнитель строки формата, такой как %@. Это необходимо только потому, что я использую здесь stringWithFormat:. Вы правы в том, что ? по сути является эквивалентом %@ в SQL. - person omz; 05.08.2012