我试图在将字符串存储为varchar的mysql列中匹配单词的beignning。遗憾的是,REGEXP似乎不适用于提到here
的UTF-8字符串所以,
如果我的名字像FoobarAándreas那样
select * from names where name REGEXP '[[:<:]]Aandre';
不起作用
然而,
从名称中选择*,其名称如'%andre%'
匹配我需要的行,但不保证单词匹配的开始。
最好是这样做并在应用程序端过滤掉它吗?还有其他解决方案吗?
答案 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)搜索重音词?