等价于 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】:您可以匹配除I
或J
以外的字符,同时在左侧声明一个非空白字符,并替换为空字符串。
(?<=\S)[^IJ]
Regex demo
【讨论】:
非常感谢!完美运行!以上是关于等价于 regexp_substr 中的 regexp_replace((^[A-Z])|([IJ])|(?<= ).)的主要内容,如果未能解决你的问题,请参考以下文章
HIVE SQL 中的 REGEXP_SUBSTR 等效项?