Snu*_*lss 5 regex mysql unicode
当我在MySQL中进行REGEXP比较时,我对瑞典字符的大写版本得到了一些奇怪的结果.我正在使用utf8_swedish_ci整理,我想找到大写的单词.
SELECT 'Öster' REGEXP BINARY '^[A-ZÅÄÖ][a-zåäö]+$'
应该返回1并且SELECT 'öster' REGEXP BINARY '^[A-ZÅÄÖ][a-zåäö]+$'
应该返回0,但是我得到相反的结果.
SELECT 'Öster' REGEXP BINARY '^[A-ZÅÄÖ][a-zåäö]+$' # returns 0 (incorrect)
SELECT 'öster' REGEXP BINARY '^[A-ZÅÄÖ][a-zåäö]+$' # returns 1 (incorrect)
SELECT 'Söder' REGEXP BINARY '^[A-ZÅÄÖ][a-zåäö]+$' # returns 1 (correct)
SELECT 'söder' REGEXP BINARY '^[A-ZÅÄÖ][a-zåäö]+$' # returns 0 (correct)
Run Code Online (Sandbox Code Playgroud)
如果我使用REGEXP而不是REGEXP BINARY,'söder'也将匹配(这不是我想要的),但即使那时'Öster'也不匹配.
我该怎么办?
经过更多实验,我发现像这样更改正则表达式的大写部分可以解决问题:
\n\nSELECT '\xc3\x96ster' REGEXP BINARY '^([A-Z]|\xc3\x85|\xc3\x84|\xc3\x96)[a-z\xc3\xa5\xc3\xa4\xc3\xb6]+$'\n
Run Code Online (Sandbox Code Playgroud)\n\n我不明白为什么这会产生不同的结果。
\n