0

我有一张雪花表,看起来像这样:

 --------------------
|      fieldname     |
 --------------------
|thisIsTestOne       |
|thisIsTestTwo       |
|this_test           |
 --------------------

我需要将列中的 PascalCase 值转换为 snake_case。注意:如果它们是 PascalCase,我只想将它们转换为 snake_case。输出应该是这样的;

 -------------------- ---------------------
|      fieldname     |    newfieldname     |
 -------------------- ---------------------
|thisIsTestOne       |this_is_test_one     |
|thisIsTestTwo       |this_is_test_two     |
|this_test           |this_test            |
 -------------------- ---------------------
4

1 回答 1

0

您应该能够使用REGEXP_REPLACE在小写字符和大写字符之间插入下划线,然后LOWER转换为小写,即

SELECT LOWER(REGEXP_REPLACE(fieldname, '([a-z])([A-Z])', '\\1_\\2'))
FROM yourtable
于 2020-07-01T07:17:52.597 回答