postgresql - 从 Postgres 中提取 XML 元素值

标签 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 的基本功能,我如何编写一个仅返回员工姓名(结果集中每行 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/

相关文章:

sql - PostgreSQL "nested"?区分和计数

sql - 在 select 语句中分配变量

html - XPath - 选择所有文本作为单行

xml-parsing - 创建 `Nokogiri::XML` 或 `Nokogiri::HTML` 对象时如何避免创建不重要的空白文本节点

java - java中xml到jtree的解析

sql - 更新选择的第一行

sql - postgres sql 'cast a tuple' 习语记录在哪里?

java - 如何将输出添加到 xpath

sql - 插入时丢失特殊字符

c# - 用C#提取html元素的值