[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: А как игнорировать регистр при поиске с RLIKE
yuriy
Добрый вечер!
А как работать с регистром (поиск с учётом регистра символов или нет) при использовании регулярных выражений в MySQL?


SELECT COUNT(*) FROM sys_containers WHERE (name_ru RLIKE '(^|[[:space:][:punct:]])Россия([[:space:][:punct:]]|$)') OR (summary_ru RLIKE '(^|[[:space:][:punct:]])Россия([[:space:][:punct:]]|$)')




Спустя 5 минут, 6 секунд (24.11.2011 - 17:03) yuriy написал(а):
В примере выше хотелось бы найти записи и с "россия" и с "Россия".

Спустя 5 минут, 31 секунда (24.11.2011 - 17:08) Winston написал(а):
Модификатор i попробуй добавить.

Спустя 5 минут, 50 секунд (24.11.2011 - 17:14) yuriy написал(а):
Я, к сожалению, не знаю синтаксиса модификаторов в регулярных выражениях MySQL. А литературе этого не нашёл. Как именно вставить модификатор. Пример можете привести?

Спустя 33 минуты, 51 секунда (24.11.2011 - 17:48) yuriy написал(а):
Кодировка обоих полей, где идёт поиск utf8_unicode_ci

Спустя 1 минута, 9 секунд (24.11.2011 - 17:49) yuriy написал(а):
По идее для таких полей функция RLIKE должна быть регистронезависимая, но этого не происходит.

Спустя 1 час, 46 минут, 28 секунд (24.11.2011 - 19:36) Placido написал(а):
С LIKE работает вариант с COLLATE. По умолчанию поиск ведется без учета регистра. Для регистронезависимого поиска, если поле создано с COLLATION utf8_bin:
SELECT `поле` FROM `таблица` WHERE `поле` COLLATE utf8_general_ci LIKE '...';
Для поиска с учетом регистра:
SELECT `поле` FROM `таблица` WHERE `поле` COLLATE utf8_bin LIKE '...';
Но этот способ почему-то не работает с регулярными выражениями.

Да, это для полей с кодировкой utf-8. Для других кодировок нужно указывать соответствующие "коллейшены", которые можно посмотреть на оф. сайте.


_____________
void x;
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.