2

鉴于:

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 中编写一个函数才能做到这一点?

4

1 回答 1

3

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

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

(从这个问题稍微借用)

于 2012-12-28T14:25:16.710 回答