我怎样才能在mysql regexp中匹配大写ÅÄÖ

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'也不匹配.

我该怎么办?

Snu*_*lss 0

经过更多实验,我发现像这样更改正则表达式的大写部分可以解决问题:

\n\n
SELECT '\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