presto替换多个字符

Posted

技术标签:

【中文标题】presto替换多个字符【英文标题】:presto replace multiple characters 【发布时间】:2021-01-08 23:51:34 【问题描述】:

我有一个字符串,想删除一组字符。有没有比链接多个replace() 更好的方法?

我想出了以下方法,但它需要为每个字符调用replace()


WITH my_table(id, a_string) AS (
     VALUES
         (1, 'test' || CHR(39) || 'xyz'),
         (2, 'x'),
         (3, 'y'),
         (1, 'z'),
         (2, 'none'),
         (3, 'none' || CHR(39) || 'xyz')
)
SELECT replace(replace(replace(a_string,CHR(39)),''),'') FROM my_table

这是一个最小的例子,我有更多的字符要转义,所以我一直在寻找一种不太冗长的方法来实现这一点。我在文档中没有找到能够直接执行此操作的字符串函数。

谢谢。

【问题讨论】:

【参考方案1】:

您可以使用regexp_replace 删除多个字符:

presto> WITH my_table(id, a_string) AS (
     ->      VALUES
     ->          (1, 'test' || CHR(39) || 'xyz'),
     ->          (2, 'x'),
     ->          (3, 'y'),
     ->          (1, 'z'),
     ->          (2, 'none'),
     ->          (3, 'none' || CHR(39) || 'xyz')
     -> )
     -> SELECT regexp_replace(a_string, '['']') FROM my_table;
  _col0
---------
 testxyz
 x
 y
 z
 none
 nonexyz
(6 rows)

【讨论】:

很好,这正是我想要的。我找不到任何正则表达式。再次感谢

以上是关于presto替换多个字符的主要内容,如果未能解决你的问题,请参考以下文章

带有presto-python-client的用户名和密码

presto 可以有多个工作进程吗?

Presto - 使用唯一标识符连接多个表

如何将 presto 集群集成到 hadoop 集群?

Presto实战

Presto