将camelCase转换为snake_case未返回预期输出MySQL 8

afdcj2ne  于 2023-01-16  发布在  Mysql
关注(0)|答案(1)|浏览(139)

我尝试在SELECT语句中编写一个文本转换,将变量名从camelCase转换为大写的SNAKE_CASE。我使用的是MySQL v.8.0.26。
例如:thisIsTheVar应变为THIS_IS_THE_VAR
我遵循this answer,但解决方案中的参数被我的MySQL版本认为是无效的("g")。

SELECT UPPER(CONCAT(SUBSTRING('thisIsTheVar', 1, 1),
     REGEXP_REPLACE(SUBSTRING('thisIsTheVar', 2), '([A-Z])', '_\\1')));

但这会返回:
T_1_1_1_1_1_1_1_1_1_1_1
有什么明显我漏掉的吗?

m4pnthwp

m4pnthwp1#

在MySQL中,使用$1而不是\1作为反向引用,并且需要在要引用的模式周围加上括号。

upper(regexp_replace('thisIsTheVar' collate utf8mb4_bin, '([A-Z])', '_$1'))

相关问题