Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
yourfanat
5 / 5 / 0
Регистрация: 30.10.2013
Сообщений: 177
#1

Как сделать поиск LIKE из БД не восприимчивым к регистру? - Android

24.10.2014, 16:04. Просмотров 549. Ответов 13
Метки нет (Все метки)

Сам запрос вот -
Java
1
String sqlQuery1 = "SELECT * FROM city AS t1, region AS t2 ON t1.region_number = t2._id WHERE lower(t1.name) LIKE '%' || ? || '%';";
Нужно что б выдавался результат при вводе как маленьких, так и больших букв. Если что данные в кириллице.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2014, 16:04     Как сделать поиск LIKE из БД не восприимчивым к регистру?
Посмотрите здесь:

Android Нужно сделать регистронезависимый поиск по таблице, содержащей русские буквы
Как сделать транслит? Android
Как сделать, чтобы до того времени как одна анимация не закончится, другая не начиналась? Android
Android Как сделать просмотр содержимого в программе, как в браузере
Как сделать WebSocketClient Android
Как лучше сделать? Android
Android Как сделать таймер?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
chizz
979 / 493 / 54
Регистрация: 19.03.2013
Сообщений: 3,073
Записей в блоге: 18
Завершенные тесты: 1
24.10.2014, 16:10     Как сделать поиск LIKE из БД не восприимчивым к регистру? #2
yourfanat, там с кириллицей жопа какая-то. Я сделал у себя, потом гляну - отвечу.
yourfanat
5 / 5 / 0
Регистрация: 30.10.2013
Сообщений: 177
24.10.2014, 16:16  [ТС]     Как сделать поиск LIKE из БД не восприимчивым к регистру? #3
Ок, спасибо) Данные нормально выводяться, нужно их сделать только невосприимчевыми к регистру)
chizz
979 / 493 / 54
Регистрация: 19.03.2013
Сообщений: 3,073
Записей в блоге: 18
Завершенные тесты: 1
24.10.2014, 16:24     Как сделать поиск LIKE из БД не восприимчивым к регистру? #4
yourfanat, вот в этом то и жопка

http://androidforums.ru/topic/1423-s...2%D1%80%D1%83/
YuraAAA
1564 / 1306 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
24.10.2014, 17:31     Как сделать поиск LIKE из БД не восприимчивым к регистру? #5
yourfanat, chizz, сделайте ещё колонку одну, назовите ещё namelc (name lower case сокращённо), записывайте туда всегда toLowerCase() и ищите по этому полю в lower case.
chizz
979 / 493 / 54
Регистрация: 19.03.2013
Сообщений: 3,073
Записей в блоге: 18
Завершенные тесты: 1
24.10.2014, 17:33     Как сделать поиск LIKE из БД не восприимчивым к регистру? #6
YuraAAA, проблема в функции toLowerCase(). Перед тем как ее вызывать нужно текст конвертировать в utf-8 вроде (если он был в другой кодировке)
yourfanat
5 / 5 / 0
Регистрация: 30.10.2013
Сообщений: 177
12.11.2014, 15:12  [ТС]     Как сделать поиск LIKE из БД не восприимчивым к регистру? #7
Колонку создал, а как туда записать то значения маленькми буквами? lower() не работает, т.к. кирилица...
Spelcrawler
523 / 493 / 111
Регистрация: 12.03.2014
Сообщений: 1,646
Завершенные тесты: 1
12.11.2014, 15:14     Как сделать поиск LIKE из БД не восприимчивым к регистру? #8
Писали ведь:
Цитата Сообщение от chizz Посмотреть сообщение
Перед тем как ее вызывать нужно текст конвертировать в utf-8 вроде (если он был в другой кодировке)
yourfanat
5 / 5 / 0
Регистрация: 30.10.2013
Сообщений: 177
12.11.2014, 15:18  [ТС]     Как сделать поиск LIKE из БД не восприимчивым к регистру? #9
база данных и так в utf-8
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
12.11.2014, 15:22     Как сделать поиск LIKE из БД не восприимчивым к регистру? #10
Тоже месяц назад столкнулся с этой проблемой. Тоже собираюсь сделать дополнительные поля. Не совсем понял про кириллицу. В Java преобразование выглядит так:
Java
1
2
Locale locale = Locale.getDefault();
String s2 = s.toLowerCase(locale);
yourfanat
5 / 5 / 0
Регистрация: 30.10.2013
Сообщений: 177
12.11.2014, 15:33  [ТС]     Как сделать поиск LIKE из БД не восприимчивым к регистру? #11
Можете поподробнее - где это преобразование делать в java?
У меня есть запрос к БД -
SQL
1
String SearchResult = "SELECT * FROM city AS t1, region AS t2 ON t1.region_number = t2._id WHERE t1.name LIKE '%' || ? || '%';";
На основе него я получаю Cursor, который и использую для вывода результата поиска.
на какой стадии делать преобразование?
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
12.11.2014, 15:55     Как сделать поиск LIKE из БД не восприимчивым к регистру? #12
yourfanat, на этапе создания (наполнения) БД. Дело в том, что SQLite не умеет преобразовывать в нижний регистр. Поэтому вам придётся делать дополнительные поля, в которые будете вставлять данные. Придётся делать не SQL-запрос, а циклом делать update с преобразованием полей.
yourfanat
5 / 5 / 0
Регистрация: 30.10.2013
Сообщений: 177
12.11.2014, 15:58  [ТС]     Как сделать поиск LIKE из БД не восприимчивым к регистру? #13
Кашмар))) Нужно попробовать) Спасибо)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2014, 21:19     Как сделать поиск LIKE из БД не восприимчивым к регистру?
Еще ссылки по теме:

Android Как сделать переключение вкладок такое же как в WhatsApp?
Searchview закрыть поиск программно, также как закрывается кнопкой back Android
Поиск как в браузере Android
Как сделать FloatingActionsMenu Android
Как реализовать поиск по Listview? Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
chizz
979 / 493 / 54
Регистрация: 19.03.2013
Сообщений: 3,073
Записей в блоге: 18
Завершенные тесты: 1
12.11.2014, 21:19     Как сделать поиск LIKE из БД не восприимчивым к регистру? #14
база данных и так в utf-8.

Так в том то и дело.

База то да. А при insert какой текст в неё пишется, в какой кодировке?
Yandex
Объявления
12.11.2014, 21:19     Как сделать поиск LIKE из БД не восприимчивым к регистру?
Ответ Создать тему
Опции темы

Текущее время: 02:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru