我使用的是PostgreSQL 11

我想替换字符串中所有出现的| and only the first character after 100

"|aDerivatives :|bprinciples and practice /|cRangarajan K. Sundaram, |fSanjiv R. Das."

在我的示例中,意思是将|a|b以及|c|f替换为‘’

我试着用这个代码,但它只替换了|a

select regexp_replace('|aDerivatives :|bprinciples and practice /|cRangarajan K. Sundaram, |fSanjiv R. Das.', '\|[A-Za-z]','') 

输出为:

"Derivatives :|bprinciples and practice /|cRangarajan K. Sundaram, |fSanjiv R. Das."

正确的输出应为:

"Derivatives :principles and practice /Rangarajan K. Sundaram, Sanjiv R. Das."

有人能帮我找到正确的查询吗

推荐答案

这可能就是你要找的东西:

SELECT 
  regexp_replace(
   '"|aDerivatives :|bprinciples and practice /|cRangarajan K. Sundaram, |fSanjiv R. Das."',
   '\|[A-Za-z]',
   '',
   'g');
                                 regexp_replace                                 
--------------------------------------------------------------------------------
 "Derivatives :principles and practice /Rangarajan K. Sundaram, Sanjiv R. Das."
(1 row)
  • g("全局")标志,用于替换一个模式的多次出现

Sql相关问答推荐

如何解决Error:operator is not unique:unknown—unknown在一个动态SQL查询?""""

SQL查询组类值在同一行中,并连接和排序其他值

如何在联接条件不匹配时按日期获取上一条记录

删除MariaDB数据库中的JSON数据

当交叉联接3个或更多表时,实体框架中是否会传输冗余的行数据并占用数据库带宽?

如何查找所提供日期范围的所有季度开始日期和结束日期

在一个子查询中签入ID';S,如果未返回,则签入另一个子查询

如何从Spark SQL的JSON列中提取动态数量的键值对

将结果从一列转换为两行或更多

在SQL中将项分配给容器

Postgresql - WHERE 中的 MAX 标准 - 初学者问题

查询以从时间范围列表中查找唯一时间段

根据要过滤的列的值进行联接和分组

SQL的左连接在多对多关系情况下使用

每个ID的SQL返回可能的最低级别及其值

在 SQL 查询中创建滚动日期

使用日期和间隔作为键加入 Athena 上的表?

如何通过子 Select 在一次更新(并行数组)中多次更新相同的行

当我按 PK 分组时,该表中的所有列在每个组中都具有相同的值.那么为什么 SQL Server 需要对这些列进行聚合呢?

Amazon Redshift - 子计划的哈希表不存在