sql oracle 中需要 Substr instr 帮助

问题描述 投票:0回答:1

我正在尝试从表中的 HTML 字符串中获取一些文本。文本是这样的,我正在尝试获取输出

ID,TEXT
1,<font face="Microsoft Sans Serif" size="8" color="#000000">ABC 123</font>
2,<font face="Microsoft Sans Serif" size="8" color="#000000">1 ETG</font>
3,<font face="Microsoft Sans Serif" size="8" color="#000000">Gatelys PERC</font>
4,<font face="Microsoft Sans Serif" size="8" color="#000000">Gml TK 144</font>

ID,TEXT
1,ABC 123
2,1 ETG
3,Gatelys PERC
4,Gml TK 144

我已经尝试过,但没有得到正确的输出。

select ID,regexp_substr(TEXT, '[^>]+',1,2) from TABLE
where TEXT is not null;
sql oracle substr regexp-substr instr
1个回答
1
投票

如果您的 HTML 始终是有效的 XHTML,那么您应该使用 XML 函数来解析字符串:

SELECT id,
       XMLQUERY('*/text()' PASSING XMLTYPE(text) RETURNING CONTENT) AS text
FROM   table_name;

对于样本数据:

CREATE TABLE table_name (id, text) AS
  Select 1, '<font face="Microsoft Sans Serif" size="8" color="#000000">ABC 123</font>' FROM DUAL UNION ALL
  Select 2, '<font face="Microsoft Sans Serif" size="8" color="#000000">1 ETG</font>' FROM DUAL UNION ALL
  Select 3, '<font face="Microsoft Sans Serif" size="8" color="#000000">Gatelys PERC</font>' FROM DUAL UNION ALL
  Select 4, '<font face="Microsoft Sans Serif" size="8" color="#000000">Gml TK 144</font>' FROM DUAL;

输出:

身份证 文字
1 ABC 123
2 1 个 ETG
3 Gatelys PERC
4 Gml TK 144

小提琴

© www.soinside.com 2019 - 2024. All rights reserved.