以下查询会生成一些不包含大写单词的行,我不知道为什么。
有什么想法吗?
SELECT exampleColumn FROM table WHERE exampleColumn REGEXP '[[:upper:]+]$';
谢谢!
答案 0 :(得分:0)
我认为你的意思是,
SELECT exampleColumn FROM table WHERE exampleColumn REGEXP '^[[:upper:]]+$';
这仅选择仅包含大写字母的列。
更新
SELECT exampleColumn FROM table WHERE exampleColumn REGEXP '\b[[:upper:]]+\b';
答案 1 :(得分:0)
请提供SHOW CREATE TABLE
。您可能会在某些exampleColumn
归类中看到_ci
已整理。
+------------------------------------------------+
| 'abc' REGEXP '^[[:upper:]]+$' COLLATE utf8_bin |
+------------------------------------------------+
| 0 | -- correctly does what you want
+------------------------------------------------+
+-------------------------------------------------------+
| 'abc' REGEXP '^[[:upper:]]+$' COLLATE utf8_general_ci |
+-------------------------------------------------------+
| 1 | -- ignores case
+-------------------------------------------------------+
<强>附加物强>
COLLATION
的默认CHARSET=latin1
为latin1_general_ci
。也就是说,它将忽略大小写,类似于我提供的示例。
以下是两个“解决方案”:
计划A:将latin1列的排序规则更改为COLLATION latin1_bin
。
计划B:在查询中使用此项:REGEXP '^[[:upper:]]+$' COLLATE latin1_bin
。