相同的查询给出不同的结果在MySQL
问题描述:
基本上,我想要的东西,是要了解为什么相同的查询给出不同的结果在MySQL
select 'aa' regexp '[h]'
返回0和
select 'აა' regexp '[ჰ]'
返回1?
检查FIDDLE
答
我觉得MqSQL正则表达式不支持UTF-8呢。见bug 30241和12.5.2 Regular Expressions。
警告
在字节为单位的方式正则表达式和RLIKE运营商的工作,所以他们没有多字节安全并可能产生与多字节字符集意想不到的效果。另外,即使给定的排序规则将它们视为相等,这些运算符也会按字节值比较字符,而重音字符可能不会相等。
您可以匹配没有字符类的字节序列:SELECT 'აა' REGEXP 'ჰ'
返回0
。
+0
我想你是对的 – bumbeishvili
只是一个假设。没有字符类,它工作正常。也许是因为在这种情况下字节序列是匹配的。 [ა]的第一个字节(http://www.fileformat.info/info/unicode/char/10d0/index.htm)和[ჰ](http://www.fileformat.info/info/unicode/char/ 10f0/index.htm)是相同的:'E183'(十六进制)。所以在课堂上的人会匹配。也尝试使用utf8_bin没有成功。奇怪:D –