#sqlite3 #android #sqlite
Привет. SELECT * FROM clients WHERE client_data LIKE '%Mark%' ORDER BY `client_id` ASC Мне необходимо организовать поиск клиента в SQLite по имени (которое расположено в тексте описания, не спрашивайте, пожалуйста, почему, такой мне ее дали), дело в том, что когда я использую LIKE '%Mark%', то в результате находятся и строки где встречается допустим слово markers (тут в принципе все правильно LIKE %% так и должен искать). Вопрос в том, что можно использовать для поиска в SQLite слова (целиком) в тексте. Желательно без использования библиотек. Погуглил, но ничего путного не нашел. (Может плохо искал, в любом случае буду благодарен даже за линк в гугле) Заранее спасибо! P.S Нашел как я считаю самое приемлемое решение. Оставлю здесь ответ если кому вдруг понадобиться. Для полно текстового поиска лучше всего использовать FTS3 (Full-Text-Search). Подробнее на английском, на русском Если у кого-то есть решения получше, буду рад узнать.
Ответы
Ответ 1
Недавно сам сталкивался с такой проблемой - проблемой поиска русских фраз в sqlite андроидовском. Все дело в операторах LIKE, ORDER BY, которые используют функцию UPPER() и которая не может корректно работать с русскими символами. Досадно. Поэтому есть 3 решения, по убыванию сложности: Скомпилировать sqlite с нужным расширением под Android NDK и юзать ее(см статью на Хабре) Использовать расширение, которое уже есть стандартно - FTS3. Создание специальных виртуальных таблиц с поддержкой поиска и использование оператора MATCH Создать в вашей таблице еще один столбец(нормализованный), который будет содержать ту же инфу по которой вам нужно провести поиск, только в верхнем(или нижнем) регистре и делать LIKE по этому столбцу, но результат возвращать по обычному столбцу. Я использовал 3 вариант и не прогадал. Наиболее простой и рабочий:)Ответ 2
Собственно что мешает сделать вот так: ...client_data LIKE '% Mark %' мм...
Комментариев нет:
Отправить комментарий