等价于 regexp_substr 中的 regexp_replace((^[A-Z])|([IJ])|(?<= ).)

Posted

技术标签:

【中文标题】等价于 regexp_substr 中的 regexp_replace((^[A-Z])|([IJ])|(?<= ).)【英文标题】:Equivalent to regexp_replace((^[A-Z])|([IJ])|(?<= ).) in regexp_substr 【发布时间】:2021-12-26 02:25:41 【问题描述】:

在 DB2 中,下一个查询可以正常工作:

select  REGEXP_REPLACE( 'René de la Ömer-Arie IJsbrand IJsse'
                      ,'(^[A-Z])|([IJ])|(?<= ).','') FROM "SYSIBM".SYSDUMMY1

结果:ené e a mer-Arie sbrand sse

但是,我想达到相反的结果:

RdlÖIJIJ

如果我尝试使用 regexp_substr 等效项,它不会给我想要的结果:

select  REGEXP_SUBSTR( 'René de la Ömer-Arie IJsbrand IJsse'
                  ,'(^[A-Z])|([IJ])|(?<= ).') FROM "SYSIBM".SYSDUMMY1

结果:R

有没有办法使用(或不使用)regexp_substr 来实现结果“RdlÖIJIJ”?

【问题讨论】:

DB2 的哪个版本:luw、​​i、z? @TheImpaler DB2 iSeries / AS400。 【参考方案1】:

您可以匹配除IJ 以外的字符,同时在左侧声明一个非空白字符,并替换为空字符串。

(?<=\S)[^IJ]

Regex demo

【讨论】:

非常感谢!完美运行!

以上是关于等价于 regexp_substr 中的 regexp_replace((^[A-Z])|([IJ])|(?<= ).)的主要内容,如果未能解决你的问题,请参考以下文章

HIVE SQL 中的 REGEXP_SUBSTR 等效项?

Oracle中分割字符串的方法

如何使 BigQuery 中的 REGEXP_SUBSTR() 函数匹配非贪婪?

JPA 中的 @Any 等价于啥?

REGEXP_SUBSTR - 如何“避免”字符串中的括号

oracle sql中的regexp_substr