假设:
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中编写一个函数才能做到这一点?
答案 0 :(得分:3)
您可以使用xpath
函数将感兴趣的字段提取到数组中,然后从那里使用unnest
内置函数将此数组拆分为多行:
SELECT unnest(xpath('//name', xtxt))
FROM xmltest;
(略微借鉴this question)