如何在Presto中实现类Excel的Proper字符串大小写转换?
在Presto中实现Excel风格的Proper大小写转换
Presto原生确实没有直接对应Excel Proper 函数的功能,但可以通过组合现有字符串函数实现每个单词首字母大写、其余字母小写的效果:
核心实现代码
SELECT regex_replace( lower(your_column_name), '\b(\w)', upper('$1') ) AS proper_case_output FROM your_table;
逻辑说明
- 先用
lower()将整个字符串统一转为小写,消除原字符串中随机大写的干扰; - 通过
regex_replace()配合正则表达式\b(\w)匹配每个单词的首字符(\b表示单词边界,\w匹配单个字母/数字/下划线); - 用
upper()将匹配到的首字符转为大写,其余字符保持小写状态。
基础示例验证
- 输入:
hello WORLD 123test - 输出:
Hello World 123Test
特殊分隔符适配(连字符/下划线)
如果需要处理带连字符、下划线的"单词",可以调整正则表达式,对应的SQL:
SELECT regex_replace( lower('hello-world_test 123'), '(^|[\s_-])(\w)', '$1' || upper('$2') ) AS proper_case_output;
- 输入:
hello-world_test 123 - 输出:
Hello-World_Test 123
内容的提问来源于stack exchange,提问作者urdearboy
相关产品推荐
相关产品推荐

