我需要将 XML 值与 PostgreSQL 9.X 进行比较。例子:
SELECT 1 FROM t WHERE xml1=xml2; -- error for XML datatype
但只能转换为文本数据类型,
SELECT 1 FROM t WHERE xml1::text=xml2::text; -- OK, but is a text-comparison
这不是最好的方法。我需要一个更好的比较算法...寻找它,我发现,也许可以比较“Canonical XML”。
如何使用 PostgreSQL 进行“规范 XML 比较”?
注意:PostgreSQL 团队假设 XML 比较的前提是错误的?
许多关于 XML 比较的文档表明规范 XML是该操作的参考格式。前任。在维基百科,他们说,
根据 W3C,如果两个 XML 文档具有相同的规范形式,那么这两个文档在给定的应用程序上下文中在逻辑上是等效的。
但是,PostgreSQL docs/9.2说,
xml 数据类型的不寻常之处在于它不提供任何比较运算符。这是因为对于 XML 数据没有定义良好且普遍有用的比较算法。
好吧,对我来说这是一个错误的前提,并且可以隐藏一个重要的 PostgreSQL 问题的真正缺乏。