Snowflake如何用REGEXP_REPLACE将逗号后首字母转换为大写
Snowflake 逗号后首字母大写实现方案
原写法失效原因
原写法失效的核心原因是:Snowflake 中
REGEXP_REPLACE的替换值参数会先完成计算,再代入正则替换逻辑。你写的UPPER('\\\1')实际是先把字符串\1转大写(结果还是\1),再作为替换模板,没有对捕获到的实际字符执行大写转换。
实现方案
方案1:轻量场景(无需保留原有全大写片段)
如果不需要保留输入中已有的全大写片段(比如LED会被转为Led),可以直接用INITCAP函数指定分隔符为逗号,代码最简:
SELECT INITCAP('Apple,ball,cat', ',') AS result; -- 输出:Apple,Ball,Cat
方案2:兼容原有大小写格式(推荐)
如果需要保留输入中已有的大小写格式(比如LED保持全大写,仅将逗号后首字母小写的字符转为大写),可以通过拆分+逐片段处理+拼接实现:
-- 测试示例1:输入 Apple,ball,cat WITH input AS (SELECT 'Apple,ball,cat' AS raw_str) SELECT LISTAGG( UPPER(LEFT(value,1)) || SUBSTR(value,2), ',' ) AS processed_str FROM input, TABLE(SPLIT_TO_TABLE(input.raw_str, ',')) GROUP BY input.raw_str; -- 输出:Apple,Ball,Cat -- 测试示例2:输入 Bulb,LED,tube WITH input AS (SELECT 'Bulb,LED,tube' AS raw_str) SELECT LISTAGG( UPPER(LEFT(value,1)) || SUBSTR(value,2), ',' ) AS processed_str FROM input, TABLE(SPLIT_TO_TABLE(input.raw_str, ',')) GROUP BY input.raw_str; -- 输出:Bulb,LED,Tube
内容的提问来源于stack exchange,提问作者Teresa Rosemary
相关产品推荐
相关产品推荐

