从字段 PLSQL 中提取子字符串

Extract a substring from a field PLSQL

我刚从 PL/SQL 开始,我需要从我存储了所有 XML 文本的字段中提取某些信息,其中包含大约 4,000 个字符,如果不是更多,请查阅我看到的相应文档对于我需要的,你可以使用函数 SUBSTR 或函数我 REGEXP_SUBSTR 不知道在我的情况下可以使用这两个函数中的哪一个。

从我存储在字段中的所有文本中我需要提取一个特定的数据,以下只是我在字段中的一部分文本。

fechaAutenticacion="2019-10-17T17:14:23"

我需要从这部分文本中提取它包含的内容 fechaAutenticacion,我的意思是这部分 2019-10-17T17:14:23 没有引号,然后将其显示在新列中。

以下是对 table 的查询以及我拥有超过 4,000 个字符的所有文本的字段。

SELECT SPRCMNT_TEXT_NAR
        FROM SPRCMNT

假设模式 ''fechaAutenticacion="<DATE>"' 始终表示您要陷印的部分,您可以像这样使用 regexp_substr()

select regexp_substr(sprcmnt_text_nar, 'fechaAutenticacion="([^"]+)"', 1, 1, null, 1) authentication_date
from sprcmnt

圆括号在字符串的匹配部分定义了一个捕获组;然后,最后一个参数告诉 Oracle return 第一个(唯一的)捕获组而不是所有匹配项。

我很想使用 regexp_replace():

select regexp_replace(sprcmnt_text_nar, '^.*fechaAutenticacion="([^"])".*$', '')