首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何与PostgreSQL进行规范比较?

如何与PostgreSQL进行规范比较?
EN

Stack Overflow用户
提问于 2013-03-13 18:02:49
回答 1查看 745关注 0票数 1

我需要将XML值与PostgreSQL 9.X进行比较。

代码语言:javascript
复制
 SELECT 1 FROM t WHERE xml1=xml2; -- error for XML datatype

但只能对文本数据类型进行转换,

代码语言:javascript
复制
 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问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-17 21:54:47

我为PostgreSQL中的XML类型实现做出了贡献,并且可能编写了您引用的大部分文档。

目前的情况有以下几个原因:

  • SQL标准没有为类型xml指定比较运算符。
  • 在实现开始时,规范化XML并没有被广泛使用和理解(至少被相关人员使用和理解,可以说是这样)。
  • 在XML规范化不起作用的情况下,存在某些限制。虽然这些在实践中可能很少见到,但这会产生一些数据类型的值无法比较的情况,例如,这会导致索引问题。(基于类似的原因,浮点类型的NaN值被指定为一个排序位置。)
  • 通过规范化进行比较是否适合于所有的用途以及用户总是想要什么仍然是一个值得商榷的问题。

当然欢迎为可选使用的XML规范化函数的实现。实际上,我希望看到一个单独的xmlcanonical类型,但这需要更多的工作。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15393026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档