开发者

Match beginning of words in Mysql for UTF8 strings

开发者 https://www.devze.com 2022-12-27 19:17 出处:网络
I m trying to match beignning of words in a mysql column that stores strings as varchar. Unfortunately, REGEXP do开发者_StackOverflowes not seem to work for UTF-8 strings as mentioned here

I m trying to match beignning of words in a mysql column that stores strings as varchar. Unfortunately, REGEXP do开发者_StackOverflowes not seem to work for UTF-8 strings as mentioned here

So,

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

does not work if I have name like Foobar Aándreas

However,

select * from names where name like '%andre%'

matches the row I need but does not guarantee beginning of words matches.

Is it better to do the like and filter it out on the application side ? Any other solutions?


A citation from tha page you mentioned:

Warning

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.


select * from names where name like 'andre%'


select * from names where name like 'andre%' is not solution for eg:

name = 'richard andrew', because the string begining with richa... and not with andre...

for the moment, the temporaly solution, for search words (words != string) starting with a string

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

But it no matching with accented words, eg: ándrew.

Any other solution, with regular expressions (mysql) to search in accented words?

0

精彩评论

暂无评论...
验证码 换一张
取 消