Я хотел проверить символы в кодировке UTF-8 в столбце латиницы-1, подробно остановившись на ответе Пуггана Сэ:
mysql> SELECT count(*) from myTable where CONVERT(myCol USING BINARY) REGEXP CONCAT('[',0xF0,'-',0xFF,']','[', 0x80, '-', 0xBF, ']') limit 3;
+----------+
| count(*) |
+----------+
| 0 |
+----------+
1 row in set (0.54 sec)
mysql> SELECT count(*) from myTable where CONVERT(myCol USING BINARY) REGEXP CONCAT('[',0xE0,'-',0xEF,']','[', 0x80, '-', 0xBF, ']') limit 3;
+----------+
| count(*) |
+----------+
| 0 |
+----------+
1 row in set (0.53 sec)
mysql> SELECT count(*) from myTable where CONVERT(myCol USING BINARY) REGEXP CONCAT('[',0xC2,'-',0xDF,']','[', 0x80, '-', 0xBF, ']') limit 3;
+----------+
| count(*) |
+----------+
| 0 |
+----------+
1 row in set (0.50 sec)
mysql>
Существует ограничение для случаев, когда я не считаюстроки, инвертирующие последний диапазон в регулярном выражении, показали мне, что там действительно были расширенные символы (что дает мне уверенность в том, что регулярное выражение работает, поскольку оно еще не нашло для меня поврежденных данных).Ссылка: https://www.fileformat.info/info/unicode/utf8.htm