【问题标题】:XML in SQL Server 2005? Better than JSON in Varchar?SQL Server 2005 中的 XML?比 Varchar 中的 JSON 更好?
【发布时间】:2026-01-31 03:35:01
【问题描述】:

在 SQL Server 中存储 XML 比在 varchar 字段中存储 JSON 有什么好处?

有没有关于如何有效使用 XML 数据类型的教程?

我是否需要以某种方式提供 dtd / xml 架构?我听说它是​​可选的,对吧?

谢谢。

更新:这是问题最后一部分的答案。

XML 模式信息用于 存储和查询优化。打字 XML 实例包含类型化的值 内部的二进制表示为 以及在 XML 索引中。这提供了 有效处理类型化的 XML 数据。

引用自:http://msdn.microsoft.com/en-us/library/ms345117(SQL.90).aspx

【问题讨论】:

    标签: sql-server xml sql-server-2005 json


    【解决方案1】:

    SQL Server 2005 及更高版本中的 XML 允许您使用 XQuery 直接操作存储在数据库表中的 XML - 您无法在 VARCHAR 字段中使用 JSON。

    查看XML Support in Microsoft SQL Server 2005Fundamentals of the XML Datatype in SQL Server 2005 了解更多信息和背景。

    此外,存储在 SQL Server 中的 XML 列中的 XML 是“标记化”和预解析的 - 它不只是存储为纯文本。你甚至可以在你的 XML 上放置索引——在它的节点上、在它的值上——无论你需要什么。

    【讨论】:

      【解决方案2】:

      将其存储为 XML 允许您利用 SQL XML 支持:XPATH、XQUERY、XML 索引等。这些允许对内容进行有效的搜索和操作。我建议你阅读XML Best Practices for Microsoft SQL Server 2005

      VARCHAR 中的 JSON 内容对于搜索和操作是不透明的。

      【讨论】:

        【解决方案3】:
        1. 可以为 XML 编制索引以提高查询的性能。
        2. 可以使用 XPath 从 XML 数据中提取数据。
        3. 可以提供一个模式来将 XML 限制为一个 secifiation,但这是可选的。
        4. 客户端库了解 XML 数据类型,并且可以更仔细/更轻松地发送/接收它。

        以上都不适用于存储在 varchar 中的 JSON。

        【讨论】:

          【解决方案4】:

          如果您使用 xml 数据类型,您可以查询单个 xml 属性值。我不相信 json 可以使用相同的功能:
          http://msdn.microsoft.com/en-us/library/ms191474.aspx

          我不认为 xsd 是必需的,因为我使用了之前没有定义的查询功能

          【讨论】:

          • 老实说,我不知道......我实现的功能可能还使用了 json,因为它只是用作 blob 存储。尽管我确实发现对可以在该字段中查询的一些问题进行几次故障排除很有用。所以我从来没有使用过生产功能
          • @Henry:如有必要,您可以添加 xml 索引以提供帮助:msdn.microsoft.com/en-us/library/ms345121%28SQL.90%29.aspx
          • @Henry,XML 数据类型将比在普通的 varchar 列中解析相同的数据更高效和优化!!!
          【解决方案5】:

          在 SQL 2005 中存储 XML 非常棒。您可以将整个 XML 文件放在一个字段中,然后运行 ​​SELECT 命令以提取某些属性和元素。不需要放置 XSD。即使在 2008 年,我也不相信它有任何 JSON 支持,尽管我可能是错的。 Here's a good starter article 就可以了。

          【讨论】: