是否可以在MySQL中使用Unicode范围进行搜索?我以前用过这个,我认为它有用:
SELECT * FROM people where surname NOT REGEXP "[\u0020\u0027\u002D\u0041-\uFF5A]"
RegEx会发现任何不是由拉丁字符,空格,副词和连字符组成的姓氏,但它不适用于我现在正在测试的表格。
从我正在阅读的内容来看,这似乎是不可能的。如果是这样,有没有解决方法?例如手动指定所有字符,例如
SELECT * FROM people where surname NOT REGEXP "[ -'abcdefg...]"
更新:以上是可接受的解决方案。
答案 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]
,u
,0
或6
的字符串被匹配。
您可以尝试同时使用like this one新旧版本的小提琴来尝试一下,然后亲自看看。