I want to get only some part of XML value.
Given sample data:
<Root>
<row id="1"><name>Sam</name><address>dummy address</address></row>
<row id="2"><name>Mak</name></row>
<row id="3" />
</Root>
I want to return only name
values Sam
,Mak
.
My try:
with cte as
(
select '<Root>
<row id="1"><name>Sam</name><address>dummy address</address></row>
<row id="2"><name>Mak</name></row>
<row id="3" />
</Root>'::xml as xm
)
select unnest(xpath('//Root/row/name', xm))
from cte;
Output:
unnest
-----------------
<name>Sam</name>
<name>Mak</name>
Expected output:
unnest
-----------------
Sam
Mak