我需要将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这不是最好的办法。我需要一个更好的比较算法。寻找它,我发现,也许,“规范XML”可以比较。
如何使用PostgreSQL进行“规范XML比较”?
注意到:PostgreSQL团队假设PostgreSQL比较错误吗?
许多关于XML比较的文档都认为规范XML是该操作的参考格式。例如。在维基百科他们说,
根据W3C,如果两个XML文档具有相同的规范形式,那么这两个文档在给定的应用程序上下文中在逻辑上是等价的。
但是,PostgreSQL docs/9.2说,
xml数据类型不常见,因为它不提供任何比较运算符。这是因为对XML数据没有定义良好和普遍有用的比较算法。
嗯,对我来说,这是一个假前提,可以隐藏一个真正缺乏一个重要的PostgreSQL问题。
发布于 2013-03-17 21:54:47
我为PostgreSQL中的XML类型实现做出了贡献,并且可能编写了您引用的大部分文档。
目前的情况有以下几个原因:
xml指定比较运算符。当然欢迎为可选使用的XML规范化函数的实现。实际上,我希望看到一个单独的xmlcanonical类型,但这需要更多的工作。
https://stackoverflow.com/questions/15393026
复制相似问题