trim(both '_' from lower(regexp_replace(name, '([A-Z])','_\1', 'g')))
以下查询:
with names (name) as (
values ('StackOverflow'),
('Foo'),
('FooBar'),
('foobar'),
('StackOverflowCom')
)
select name, trim(both '_' from lower(regexp_replace(name, '([A-Z])','_\1', 'g'))) as new_name
from names;
4条答案
按热度按时间ngynwnxp1#
下面的正则表达式在每个大写字母前添加一个下划线:
由于这会导致在开始处没有下划线,因此需要使用
trim()
将其删除以下查询:
返回:
9rnv2umw2#
我想你想要的是
我们在这里测试它,
这比@a_horse_with_no_name有一个优点,它可以处理连续的大写字母,也可以解决空格问题。
还可以看到,
0yg35tkg3#
SnakeCase到CamelCase
CamelCase到SnakeCase
vdzxcuhz4#
多亏了chatGPT,我在Snowflake SQL中得到了这个: