А как работать с регистром (поиск с учётом регистра символов или нет) при использовании регулярных выражений в 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:
Да, это для полей с кодировкой utf-8. Для других кодировок нужно указывать соответствующие "коллейшены", которые можно посмотреть на оф. сайте.
SELECT `поле` FROM `таблица` WHERE `поле` COLLATE utf8_general_ci LIKE '...';Для поиска с учетом регистра:
SELECT `поле` FROM `таблица` WHERE `поле` COLLATE utf8_bin LIKE '...';Но этот способ почему-то не работает с регулярными выражениями.
Да, это для полей с кодировкой utf-8. Для других кодировок нужно указывать соответствующие "коллейшены", которые можно посмотреть на оф. сайте.
_____________
void x;