Страницы

Поиск по вопросам

пятница, 19 октября 2018 г.

Не работают регулярные выражения в MySQL

Здравствуйте. В БД установлена кодировка utf8. Когда я пишу запрос, используя регулярные выражения, они не работают.
Обычные запросы работают: SELECT * FROM verb.tableA WHERE rw LIKE 'небо';
Но когда пишу SELECT * FROM verb.tableA WHERE rw RLIKE '^неб[оа]$';, то ничего не выводится. Почему так происходит?


Ответ

Обновлено
Как правильно меня поправили в комментариях, выражение у вас правильное, а вот MySql не правильно его обрабатывает. В вашем случае можно такой вариант использовать:
'^неб(о|а)$'
Все дело в особенности обработки выражений в MySql. Обработка идет побайтово, и поэтому ваш вариант не работает.
Цитата из документации
Warning The REGEXP and RLIKE operators work in byte-wise fashion, so they are not multibyte safe and may produce unexpected results with multibyte character sets. In addition, these operators compare characters by their byte values and accented characters may not compare as equal even if a given collation treats them as equal.

Комментариев нет:

Отправить комментарий