计算字符串中大写字母的数量

时间:2020-05-12 15:15:23

标签: postgresql text

我遇到了一个看似简单的问题,无法解决。我想确定大写字母的数量是否大于小写字母的数量(忽略特殊字符,空格等)。

示例

id | text        | upper_greater_lower | note
------------------------------------------------------------------
1  | Hello World | False               | because |HW| < |elloorld|
2  | The XYZ     | True                | because |TXYZ| > |he|
3  | Foo!!!      | False               | because |F| < |oo|
4  | BAr???      | True                | because |BA| > |r|

我的最初想法是确定小写字母的数量,然后确定大写字母的数量,最后比较它们。但是,我无法以任何优雅高效的方式做到这一点。

我希望能处理大约3000万行,每行约300个字符。

您有什么建议?

谢谢!

1 个答案:

答案 0 :(得分:0)

使用正则表达式魔术,可能是:

SELECT length(regexp_replace(textcol, '[^[:upper:]]', '', 'g'))
     > length(regexp_replace(textcol, '[^[:lower:]]', '', 'g'))
FROM atable;
相关问题