从列中的xml中选择第一个元素

时间:2018-07-23 06:46:22

标签: xml postgresql

我在此栏中有以下内容。 (不是正确的xml内容)

<menu=REDACTED - contact info>
  <fillcolor=black>
  <border=1>
  <color=white>
  <FontHeight=19>
  <type=text>

Fiddle

我想从xml内容中提取第一个元素,如下所示。

<menu=REDACTED - contact info>

“ xmlpath”在这里无济于事,因为任何XML元素都没有结束标记。 我知道这不是适当的XML内容,但是当我在现有系统中玩耍时,我必须找出上述XML的方式。

问题:如何从整个内容中提取<menu=REDACTED - contact info>

1 个答案:

答案 0 :(得分:1)

我可能会误解这个问题,但是我假设您是在说您想要第一个菜单元素,而不是第一个菜单元素,而不管它的名称是什么?

由于它是无效的xml,因此您将需要使用正则表达式之类的东西:

SELECT (REGEXP_MATCHES(str, '<menu=.*?>'))[1] FROM tes;

这将获得第一个菜单元素。参见示例https://www.db-fiddle.com/f/4jyoMCicNSZpjMt4jFYoz5/1