Получение 'недопустимого класса символов' из ошибки регулярного выражения в MySQL - PullRequest
1 голос
/ 07 ноября 2019

Когда я пытался выполнить следующий запрос в Adminer и Sequel Pro:

SELECT * FROM `sms_messages` WHERE `message` REGEXP '[^[:ascii:]]+'

Я получаю следующую ошибку в MYSQL:

Error in query (1139): Got error 'invalid character class' from regexp

Однако, это работает на моем локальном компьютерено не работает в AWS RDS. В локальной я установил XAMPP с MariaDB 10.1.37. У меня есть версия движка MySQL 5.7.26 в AWS RDS. Что здесь не так?

1 Ответ

0 голосов
/ 07 ноября 2019

Из документации для REGEXP (версия 5.7, а не 8.0) мы видим, что не поддерживается [:ascii:] набор символов. Но вместо этого мы можем сопоставить все символы ASCII, используя следующий шестнадцатеричный диапазон:

[\x00-\x7F]

Ваш обновленный запрос:

SELECT *
FROM sms_messages
WHERE CONVERT(message USING BINARY) REGEXP '[^\x00-\x7F]';
...