Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
yourfanat
5 / 5 / 3
Регистрация: 30.10.2013
Сообщений: 180
#1

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

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

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

Поиск чувствительный к регистру
Суть в следующем. Допустим я ввожу логин в поле ввода "Qwerty"? после чего...

Поиск чувствителен к регистру
Товарищи, помогите пожалуйста разобраться в проблеме. Я заблудился в трёх...

Поиск подстроки, нечувствительный к регистру
Есть ли встроенные функции для поиска подстроки в AnsiString, нечувствительный...

Поиск в таблице чувсвительный к регистру.
Пиплы хелп! В базе есть таблица, в ней поле: varchar(128). Необходимо...

Запрос к регистру накопления и регистру сведенй
как не используя СКД в 1 запросе получить запись из Регистра сведений на...

13
chizz
983 / 500 / 101
Регистрация: 19.03.2013
Сообщений: 3,101
Записей в блоге: 19
Завершенные тесты: 1
24.10.2014, 16:10 #2
yourfanat, там с кириллицей жопа какая-то. Я сделал у себя, потом гляну - отвечу.
0
yourfanat
5 / 5 / 3
Регистрация: 30.10.2013
Сообщений: 180
24.10.2014, 16:16  [ТС] #3
Ок, спасибо) Данные нормально выводяться, нужно их сделать только невосприимчевыми к регистру)
0
chizz
983 / 500 / 101
Регистрация: 19.03.2013
Сообщений: 3,101
Записей в блоге: 19
Завершенные тесты: 1
24.10.2014, 16:24 #4
yourfanat, вот в этом то и жопка

http://androidforums.ru/topic/1423-s...2%D1%80%D1%83/
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
24.10.2014, 17:31 #5
yourfanat, chizz, сделайте ещё колонку одну, назовите ещё namelc (name lower case сокращённо), записывайте туда всегда toLowerCase() и ищите по этому полю в lower case.
1
chizz
983 / 500 / 101
Регистрация: 19.03.2013
Сообщений: 3,101
Записей в блоге: 19
Завершенные тесты: 1
24.10.2014, 17:33 #6
YuraAAA, проблема в функции toLowerCase(). Перед тем как ее вызывать нужно текст конвертировать в utf-8 вроде (если он был в другой кодировке)
0
yourfanat
5 / 5 / 3
Регистрация: 30.10.2013
Сообщений: 180
12.11.2014, 15:12  [ТС] #7
Колонку создал, а как туда записать то значения маленькми буквами? lower() не работает, т.к. кирилица...
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
12.11.2014, 15:14 #8
Писали ведь:
Цитата Сообщение от chizz Посмотреть сообщение
Перед тем как ее вызывать нужно текст конвертировать в utf-8 вроде (если он был в другой кодировке)
0
yourfanat
5 / 5 / 3
Регистрация: 30.10.2013
Сообщений: 180
12.11.2014, 15:18  [ТС] #9
база данных и так в utf-8
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
12.11.2014, 15:22 #10
Тоже месяц назад столкнулся с этой проблемой. Тоже собираюсь сделать дополнительные поля. Не совсем понял про кириллицу. В Java преобразование выглядит так:
Java
1
2
Locale locale = Locale.getDefault();
String s2 = s.toLowerCase(locale);
0
yourfanat
5 / 5 / 3
Регистрация: 30.10.2013
Сообщений: 180
12.11.2014, 15:33  [ТС] #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, который и использую для вывода результата поиска.
на какой стадии делать преобразование?
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
12.11.2014, 15:55 #12
yourfanat, на этапе создания (наполнения) БД. Дело в том, что SQLite не умеет преобразовывать в нижний регистр. Поэтому вам придётся делать дополнительные поля, в которые будете вставлять данные. Придётся делать не SQL-запрос, а циклом делать update с преобразованием полей.
0
yourfanat
5 / 5 / 3
Регистрация: 30.10.2013
Сообщений: 180
12.11.2014, 15:58  [ТС] #13
Кашмар))) Нужно попробовать) Спасибо)
0
chizz
983 / 500 / 101
Регистрация: 19.03.2013
Сообщений: 3,101
Записей в блоге: 19
Завершенные тесты: 1
12.11.2014, 21:19 #14
база данных и так в utf-8.

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

База то да. А при insert какой текст в неё пишется, в какой кодировке?
0
12.11.2014, 21:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2014, 21:19
Привет! Вот еще темы с решениями:

Нужно сделать проверку по регистру сведений на наличие
Есть обработка для установки (дописанной) характеристики номенклатуры...

Сделать, чтобы при вводе имени запрос не был чувствителен к регистру
Хочу задать вопрос, чтобы при вводе имени запрос не был чувствителен к...

Как убрать чувствительность к регистру?
У меня есть textbox для поиска по datagrid, но он чувствителен к регистру и...

Как запрос преобразовать к нижнему регистру?
Есть html код, где клиент пишет ответ <form action="ridles.php" method="GET">...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru