为什么mariadb正则表达式会产生相反的结果?

时间:2016-07-29 10:36:16

标签: regex mariadb

我有一个包含以下内容的专栏:

+------------+
| name       |
+------------+
| 你好世界    |
| HelloWorld |
| Hello世界  |
+------------+

我希望

SELECT `name` FROM `table`  WHERE `name` REGEXP '[u4e00-u9fa5]';

只给我一个中文这样的行:

+------------+
| name       |
+------------+
| 你好世界    |
+------------+

但它实际上给了我相反的结果:

+------------+
| name       |
+------------+
| HelloWorld |
| Hello世界  |
+------------+

我知道:

SELECT `name` FROM `table`  WHERE `name` NOT REGEXP '[u4e00-u9fa5]';

可以按预期工作,但我想知道为什么mysql regexp会产生相反的结果?这是默认设置吗?或者我犯了一个错误。提前谢谢。

1 个答案:

答案 0 :(得分:0)

如果要检查utf8字符串中是否包含CJK字符:

from operator import itemgetter
from itertools import groupby
data = [75, 78, 100, 101, 102, 109]
for k, g in groupby(enumerate(data), lambda (i,x):i-x):
    print map(itemgetter(1), g)

不包括不在" BMP"中的汉字。平面上。