mySQL REGEXP选择信息\u schema.COLUMNS,COLUMN\u NAME中使用大写字母

mySQL REGEXP选择信息\u schema.COLUMNS,COLUMN\u NAME中使用大写字母,mysql,regex,Mysql,Regex,我正在尝试创建一个查询,该查询将只选择在指定的WHERE条件列中混合使用小写和大写字母的行。我的REGEXP需要什么调整 我期望从以下查询中得到以下结果: 圣经之书 圣经·琐事·类别·参考 我需要查询对其他数据库可重用。我不想把“圣经”和REGEXP匹配起来 以下是我两次失败的尝试: SELECT `TABLE_NAME` , `COLUMN_NAME` FROM information_schema.COLUMNS WHERE TABLE_SCHEMA="elve1522_elversic

我正在尝试创建一个查询,该查询将只选择在指定的WHERE条件列中混合使用小写和大写字母的行。我的REGEXP需要什么调整

我期望从以下查询中得到以下结果:

  • 圣经之书
  • 圣经·琐事·类别·参考
我需要查询对其他数据库可重用。我不想把“圣经”和REGEXP匹配起来

以下是我两次失败的尝试:

SELECT `TABLE_NAME` , `COLUMN_NAME` FROM information_schema.COLUMNS WHERE TABLE_SCHEMA="elve1522_elversiculodeldia" AND `COLUMN_NAME` != LOWER(`COLUMN_NAME`)
没有结果

结果只有小写的列名。它选择了32/63行。只有两行的列名称包含大写字母,并且两行都未选中

供将来参考,在堆栈溢出用户的帮助下,正确的查询是:

SELECT `TABLE_NAME` , `COLUMN_NAME` FROM information_schema.COLUMNS WHERE TABLE_SCHEMA="elve1522_elversiculodeldia" AND (`COLUMN_NAME` COLLATE utf8_bin) REGEXP '[A-Z]+[a-z]+' ;
你介意试一试吗


从信息模式中选择
TABLE\u NAME
COLUMN\u NAME
,其中TABLE\u schema=“elve1522\u elversiculodeldia”和((
COLUMN\u NAME
=小写(
COLUMN\u NAME
))和(
COLUMN\u NAME
=大写(
COLUMN\u NAME
))列,以用小写和大写字母标识值,您需要使用collate utf8\u bin而不是utf8-general\u ci,这与大小写无关

要查找大写和小写的混合名称,请执行以下操作:

WHERE (CNAME COLLATE utf8_bin) REGEXP '[A-Z]+[a-z]+' 

您的筛选器“^[A-Z]+$”基本上过滤掉了所有带有非英语字符(如空格、下划线…)的标题。

您的正则表达式是一个或多个字符A-Z。不允许使用下划线…此查询选择所有63行。这些更改成功。
WHERE (CNAME COLLATE utf8_bin) REGEXP '[A-Z]+[a-z]+'