匹配Mysql中单词的开头为UTF8字符串

时间:2010-04-23 20:56:52

标签: mysql regex

我试图在将字符串存储为varchar的mysql列中匹配单词的beignning。遗憾的是,REGEXP似乎不适用于提到here

的UTF-8字符串

所以,

  

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

如果我的名字像FoobarAándreas那样

不起作用

然而,

  

从名称中选择*,其名称如'%andre%'

匹配我需要的行,但不保证单词匹配的开始。

最好是这样做并在应用程序端过滤掉它吗?还有其他解决方案吗?

3 个答案:

答案 0 :(得分:0)

select * from names where name like 'andre%'

答案 1 :(得分:0)

你提到的页面引用:

  

警告

     

REGEXP和RLIKE运算符以字节方式工作,因此它们不是多字节安全的,并且可能会产生多字节字符集的意外结果。此外,这些运算符通过字节值比较字符,即使给定的排序规则将重音字符视为相等,重音字符也可能无法比较。

答案 2 :(得分:0)

select * from names where name like 'andre%'不是解决方案,例如:

name ='richard andrew',因为字符串以richa开头......而不是andre ...

目前,临时解决方案,搜索单词(单词!=字符串)以字符串开头

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

但它与重音词没有匹配,例如:ándrew。

任何其他解决方案,使用正则表达式(mysql)搜索重音词