我遇到了一个看似简单的问题,无法解决。我想确定大写字母的数量是否大于小写字母的数量(忽略特殊字符,空格等)。
示例
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个字符。
您有什么建议?
谢谢!
答案 0 :(得分:0)
使用正则表达式魔术,可能是:
SELECT length(regexp_replace(textcol, '[^[:upper:]]', '', 'g'))
> length(regexp_replace(textcol, '[^[:lower:]]', '', 'g'))
FROM atable;