从Postgres中提取XML元素值

时间:2012-12-28 13:35:02

标签: postgresql xpath xml-parsing xquery plpgsql

假设:

CREATE TABLE xmltest(xtxt xml);

INSERT INTO xmltest values ('<EMP><NAME>Mike</NAME><HIREDATE>12-FEB-96</HIREDATE></EMP><EMP><NAME>Bob</NAME><HIREDATE>13-AUG-97</HIREDATE></EMP><EMP><NAME>Paul</NAME><HIREDATE>17-JUN-94</HIREDATE></EMP><EMP><NAME>Jim</NAME><HIREDATE>01-JUN-94</HIREDATE></EMP>');

使用Postgres 9.2的基本功能,如何编写仅返回员工姓名的SELECT语句,结果集中每行1个名称?或者我是否必须在PL / PGSQL中编写一个函数才能做到这一点?

1 个答案:

答案 0 :(得分:3)

您可以使用xpath函数将感兴趣的字段提取到数组中,然后从那里使用unnest内置函数将此数组拆分为多行:

SELECT unnest(xpath('//name', xtxt))
FROM   xmltest;

(略微借鉴this question