Совпадение начала слов в Mysql для строк UTF8 - PullRequest
0 голосов
/ 24 апреля 2010

Я пытаюсь сопоставить beignning слов в столбце mysql, который хранит строки как varchar.К сожалению, REGEXP, похоже, не работает для строк UTF-8, как упоминалось здесь

Итак,

select * from names where name REGEXP '[[:<:]]Aandre';

не работает, если у меня есть имя, подобное Foobar Aándreas

Однако

выберите * из имен, имена которых совпадают с '% andre%'

нужная мне строка, но не гарантирует начала совпадения слов.

Лучше ли сделать подобное и отфильтровать его на стороне приложения?Любые другие решения?

Ответы [ 3 ]

0 голосов
/ 25 апреля 2010

Цитата со страницы, которую вы упомянули:

Предупреждение

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

0 голосов
/ 20 мая 2011

select * from names where name like 'andre%' не является решением, например:

name = 'richard andrew', потому что строка начинается с ричи ... а не с андре ...

на данный момент, временное решение для поисковых слов (words! = String), начинающихся со строки

select * from names where name REGEXP '[[:<:]]andre';

Но это не соответствует акцентированным словам, например: ándrew.

Любое другое решение с регулярными выражениями (mysql) для поиска в акцентированных словах ?

0 голосов
/ 24 апреля 2010
select * from names where name like 'andre%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...