REGEXP в MySQL не понимает кириллицу в квадратных скобках. Как исправить?

Действительно, в MySQL REGEXP по умолчанию не понимает кириллицу в квадратных скобках. Однако существует несколько способов исправить эту проблему.

1. Использование передового (collation-aware) регулярного выражения:
- Вам следует проверить, какие collation используются в базе данных, таблице и столбце, в котором вы выполняете поиск. Collation определяет правила сравнения и сопоставления для текстовых данных в MySQL.
- Для поддержки кириллицы в квадратных скобках вы можете использовать collation с UTF-8. Например, для столбца name с collation utf8_general_ci вы можете использовать следующее выражение:

SELECT * FROM table WHERE name REGEXP '[а-яА-Я]';

- Учтите, что не все collation поддерживают кириллические символы в регулярных выражениях. Если у вас не работает utf8_general_ci, вам может потребоваться использовать другой collation, который поддерживает кириллические символы.

2. Использование POSIX регулярного выражения:
- В MySQL также поддерживаются POSIX регулярные выражения, которые не имеют этой проблемы с кириллицей в квадратных скобках.
- Для поиска кириллических символов вы можете использовать выражение типа:

SELECT * FROM table WHERE name REGEXP '[[.alpha.]]';

- В этом случае "[.alpha.]" будет соответствовать любой кириллической букве.

3. Использование HEX() функции:
- Вместо использования кириллических символов в регулярных выражениях вы можете использовать HEX() функцию для преобразования символов в их шестнадцатеричное представление.
- Например, для поиска кириллических символов от А до Я вы можете использовать следующее выражение:

SELECT * FROM table WHERE HEX(name) REGEXP '^D[0-9A-F]{2,}$';

- Здесь "^D[0-9A-F]{2,}$" соответствует кириллическим символам от А (в HEX представлении - D090) до Я (в HEX представлении - D09F).

Это некоторые из способов, которые помогут исправить проблему с неподдержкой кириллицы в квадратных скобках в MySQL REGEXP. Выберите подходящий способ в зависимости от ваших потребностей и настроек базы данных.