MySQL: найти кириллицу или греческий текст в базе данных - PullRequest
1 голос
/ 10 января 2012

У меня есть таблица UTF8 в MySQL, содержащая имена со всеми типами текста (числовой, прописной, греческий, кириллический и т. Д.).

---------------
ID   Name
---------------
001  Jane Smith
002  John Doe
003  Джемз Смис
004  Пэтра Смис
005  "Groove" Holme
006  99er Dude

Как выбрать только кириллические имена? (записи 003 и 004)

EDIT

Спасибо за ответ ниже, который выглядел так, как будто он был бы правильным, но не работал. Больше исследований нашло это в документации:

Внимание

Операторы REGEXP и RLIKE работают побайтово, поэтому они не многобайтовый безопасный и может привести к неожиданным результатам с многобайтовым наборы символов. Кроме того, эти операторы сравнивают символы по их значения байтов и акцентированные символы могут не совпадать даже если данное сопоставление рассматривает их как равные.

РЕДАКТИРОВАТЬ, РЕДАКТИРОВАТЬ, РЕШЕНИЕ

Я решил эту проблему, добавив в свою базу данных дополнительное поле, в котором хранится тип сценария, например, кириллица, тайский и т. Д. Затем в PHP был запущен пакетный процесс, который обнаруживает сценарий и сохраняет информацию в базе данных.

Чтобы обнаружить скрипт в PHP, используйте функции регулярных выражений Unicode. Смотрите эту страницу:

http://www.regular -expressions.info / unicode.html

1 Ответ

7 голосов
/ 10 января 2012

Я не знаю, охватывает ли он все символы, но вы должны быть в состоянии использовать это:

SELECT * FROM table WHERE Name REGEXP '[Α-Ωα-ωА-Яа-я]'

, который будет возвращать все записи, содержащие хотя бы один кириллический или греческий символ

РЕДАКТИРОВАТЬ

Отметьте "Предупреждение" в вопросе OP о работе REGEXP / RLIKE побайтно, чтобы они могли не работать для многобайтовых наборов символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...