首页 > 解决方案 > 是否可以在雪花中使用 regexp_replce 进行大小写转换?

问题描述

我正在尝试使用在雪花中进行大小写转换REGEXP_REPLACE,但它似乎不支持适当的转义序列。

示例:我想接受hello_world并让它说Hello_World

我试过了:

SELECT REGEXP_REPLACE('hello_world', '(^[a-z]|_[a-z])', '\\U\\1', 1, 0, 'c');

替换字符串无法重写,模式:'(^[a-z]|_[a-z])',替换字符串:'\U\1',原因:无效的转义序列

SELECT REGEXP_REPLACE('hello_world', '(^[a-z]|_[a-z])', UPPER('\\1'), 1, 0, 'c')

环绕UPPER替换也没有像预期的那样做。

我真的很想避免一些连接解决方​​案,因为 SQL 会变得丑陋且难以快速维护。

另一个例子:我想把HelloWorld它说出来hello_world

类似于上面我得到同样的错误:

SELECT REGEXP_REPLACE('HelloWorld', '([a-z])([A-Z])', '\\1\\L\\2', 1, 0, 'c');

替换字符串无法重写,模式:'([a-z])([A-Z])',替换字符串:'\1\L\2',原因:无效的转义序列

标签: sqlregexstringsnowflake-cloud-data-platform

解决方案


不需要复杂的正则表达式。Snowflake 支持string functionINITCAP(),这正是你想要的:

select initcap('hello world')

推荐阅读