在MySQL中按Unicode范围搜索

时间:2014-09-08 15:32:12

标签: mysql regex unicode

是否可以在MySQL中使用Unicode范围进行搜索?我以前用过这个,我认为它有用:

SELECT * FROM people where surname NOT REGEXP "[\u0020\u0027\u002D\u0041-\uFF5A]"

RegEx会发现任何不是由拉丁字符,空格,副词和连字符组成的姓氏,但它不适用于我现在正在测试的表格。

从我正在阅读的内容来看,这似乎是不可能的。如果是这样,有没有解决方法?例如手动指定所有字符,例如

SELECT * FROM people where surname NOT REGEXP "[ -'abcdefg...]"

更新:以上是可接受的解决方案。

1 个答案:

答案 0 :(得分:2)

@Mofi的评论回答了一个古老的重要问题:

在MySql 8.0及更高版本上,应转义Unicode前缀dnspython\u

例如,要搜索范围a-z:

\\u

在早期版本中,不支持使用Unicode(see this question),实际发生的是设置匹配项,例如对于SELECT * FROM people where surname REGEXP "[\\u0061-\\u007a]" ,包含[\\u0061]u06的字符串被匹配。

您可以尝试同时使用like this one新旧版本的小提琴来尝试一下,然后亲自看看。