【问题标题】:Equivalent to regexp_replace((^[A-Z])|([IJ])|(?<= ).) in regexp_substr等价于 regexp_substr 中的 regexp_replace((^[A-Z])|([IJ])|(?<= ).)
【发布时间】: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。

标签: sql db2 regexp-replace regexp-substr


【解决方案1】:

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

(?<=\S)[^IJ]

Regex demo

【讨论】:

  • 非常感谢!完美运行!
猜你喜欢
  • 2022-01-12
  • 1970-01-01
  • 2014-05-28
  • 1970-01-01
  • 1970-01-01
  • 2018-12-18
  • 1970-01-01
  • 2020-03-19
  • 2020-08-12
相关资源
最近更新 更多