Re: utf8 в mysql
Так просто не одолеете. Плохо в regexp и иже с ним с multibyte chars.
Почитайте вот это, например:
http://dev.mysql.com/doc/refman/5.1/en/string-comparison-functions.html#operator_regexp
Там четко написано:
The REGEXP and RLIKE operators work in byte-wise fashion, so they are
not multi-byte safe and may produce unexpected results with multi-byte
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.
Есть даже worklog на это дело:
http://forge1.mysql.com/worklog/task.php?id=353
avm7wo***@m*****.ru wrote:
> Как обстоят дела с поддержкой русского в mysql на utf8?
>
> Пытался осуществлять поиск при помощи например
> SELECT 'Поле' REGEXP '[Пп][Оо][Лл][Ее]' ;
>
> результат 'false'
>
> При поиске по шаблону с точным совпадением регистров символов (верхнего
> и нижнего) ищет:
>
> SELECT 'Поле' REGEXP 'Поле' ;
>
> Что интересно: при поиске по шаблону типа '[Пп][Оо][Лл][Ее]' похоже ищет
> в однобайтном режиме, потому как находит все что угодно, где совпадений
> по символам вовсе нет.
>
> Выставлял различные значения charset и collation как для самого сервера
> mysqld, так и для базы данных и для отдельных полей - результат тот же.
>
> Что интересно - если неправильно выставить collation, то выдает ошибку,
> из которой следует, что regexp работает с collation 'latin1_swedish_ci'
>
>