ClickHouse 字符串替换函数

目录

1、replaceOne(haystack, pattern, replacement)

2、replaceAll(haystack, pattern, replacement), replace(haystack, pattern, replacement)

3、replaceRegexpOne(haystack, pattern, replacement)

4、replaceRegexpAll(haystack, pattern, replacement)

5、regexpQuoteMeta(s)


1、replaceOne(haystack, pattern, replacement)

说明:用’replacement’子串替换’haystack’中第一次出现的’pattern’子串(如果存在)。’pattern’和’replacement’必须是常量。

select replaceRegexpOne('Hello, ClickHouce','e',''); -- Hllo, ClickHouce

2、replaceAll(haystack, pattern, replacement), replace(haystack, pattern, replacement)

说明:用’replacement’子串替换’haystack’中出现的所有的’pattern’子串。

select replaceAll('Hello, ClickHouce','e',''),replace('Hello, ClickHouce','e','');-- Hllo, ClickHouc

3、replaceRegexpOne(haystack, pattern, replacement)

使用’pattern’正则表达式的替换。 ‘pattern’可以是任意一个有效的re2正则表达式。
如果存在与’pattern’正则表达式匹配的匹配项,仅替换第一个匹配项。
模式pattern可以指定为‘replacement’。此模式可以包含替代\0-\9。
替代\0包含了整个正则表达式。替代\1-\9对应于子模式编号。要在模板中使用反斜杠\,请使用\将其转义。
另外还请记住,字符串字面值(literal)需要额外的转义。

-- 例1.将日期转换为美国格式:
select
    '2021-12-21' as EventDate ,
    replaceRegexpOne(toString(EventDate), '(\\d{4})-(\\d{2})-(\\d{2})', '\\2/\\3/\\1') AS res;

-- 例2.复制字符串五次:
select replaceRegexpOne('Hello, ClickHouce;', '.*', '\\0\\0\\0\\0\\0') AS res;

4、replaceRegexpAll(haystack, pattern, replacement)

说明:与replaceRegexpOne相同,但会替换所有出现的匹配项。例如:

select replaceRegexpAll('Hello, ClickHouce', '.', '\\0\\0') AS res;

注:对于空子字符串,正则表达式只会进行一次替换。

select replaceRegexpAll('Hello, ClickHouce', '^', 'here: ') AS res;

5、regexpQuoteMeta(s)

说明:该函数用于在字符串中的某些预定义字符之前添加反斜杠。
预定义字符:\0, \\, |, (, ), ^, $, ., [, ], ?, *, +, {, :, -。
这个实现与re2::RE2::QuoteMeta略有不同。它以\0 转义零字节,而不是\x00,并且只转义必需的字符。

select regexpQuoteMeta('$Hello, ClickHouce $[]');

参考:https://clickhouse.tech/docs/en/sql-reference/functions/string-replace-functions/

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值