我在下面的列中有一些字符串值
hel_some_data
h_some_data_more_data
hello_some_more_data_data
我需要如下输出
hel_some data
h_some data more data
hello_some more data data
基本上我想用“”替换“_”,除了第一次出现
我正在尝试使用正则表达式替换,但无法找到如何给出位置,我在文档中找到了一种语法,它看起来像是通过文档本身的代码提供位置不起作用,我正在尝试下面的文档示例。
SELECT REGEXP_REPLACE('the fox', 'FOX', 'quick brown fox', 1, 'i');
但它说找不到功能。
任何帮助,高度赞赏, 谢谢,
REGEXP_REPLACE
功能,允许指定位置(这并不意味着您认为它的作用,如果我正确理解您的尝试)。
Athena 不是 Redshift,它基于 Presto/Trino,不支持此类版本的
REGEXP_REPLACE
。
一种选择是使用基于正则表达式将字符串拆分为字符串数组并应用连接函数的版本(docs):
-- sample data
WITH dataset(str) AS (
values ('hel_some_data'),
('h_some_data_more_data'),
('hello_some_more_data_data')
)
-- query
select regexp_replace(str, '([^_]*_[^_]*)(.*)', x -> x[1] || replace(x[2], '_', ' '))
from dataset;
输出:
_col0
---------------------------
hel_some data
h_some data more data
hello_some more data data