给定:
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 的基本功能,我如何编写一个仅返回员工姓名(结果集中每行 1 个姓名)的 SELECT 语句?或者我必须在 PL/PGSQL 中编写一个函数才能做到这一点?
最佳答案
您可以使用 xpath
函数将感兴趣的字段提取到数组中,然后从那里您可以使用 unnest
内置函数将该数组拆分为多行:
SELECT unnest(xpath('//name', xtxt))
FROM xmltest;
(稍微借用 this question )
关于postgresql - 从 Postgres 中提取 XML 元素值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14070348/