我遇到了一个看似简单的问题,我无法解决。我想确定大写字母的数量是否大于小写字母的数量(忽略特殊字符、空格等(。
例
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|
我最初的想法是确定低写字母的数量,然后是大写字母,最后比较它们。但是,我无法以任何优雅和有效的方式做到这一点。
我希望处理 ~30M 行,每行 ~300 个字符。
你有什么建议?
谢谢!
使用正则表达式魔法,这可能是:
SELECT length(regexp_replace(textcol, '[^[:upper:]]', '', 'g'))
> length(regexp_replace(textcol, '[^[:lower:]]', '', 'g'))
FROM atable;