ntext中的XML数据到xml数据类型

时间:2013-03-21 11:35:55

标签: sql sql-server xml

在XML数据方面,我是新手。

我目前有一个数据库,其中xml数据存储在ntext列中,此数据库似乎占用了太多空间。我正在尝试改进数据的存储方式,以减少数据库的整体大小。

我看到它的方式,我有两个选择:

  • nvarchar(max)
  • xml

我需要通过将一些数据导入这些列来测试上述两个选项。

我遇到的问题是,ntext列中的XML数据当前存储为utf-8。为了让我将它导入XML数据类型列,我需要将数据CAST / CONVERT转换为UTF-16?

这是对的吗?

1 个答案:

答案 0 :(得分:4)

将数据存储为数据类型XML具有两个主要好处

  1. 因为它存储为原生XML,你可以在它上面做一些像XQuery这样的事情
  2. 因为它存储为XML,所以它以优化的(标记化)方式存储,占用的空间少于等效nvarchar(max)列消耗的空间。
  3. 转换现有的NTEXT列:只需在其上执行CAST

    你得到什么结果:

    SELECT 
       id, ntextColumn, CAST(ntextColumn AS XML)
    FROM 
       dbo.YourTable
    

    我几乎可以肯定这会奏效 - 就像那样。 SQL Server不支持UTF-8 - 所以即使在ntext列中的数据很可能真正存储为UTF-8(它已经被转换为SQL Server的Unicode - UCS) -2 / UTF-16)所以我没有看到将此转换为数据类型XML的任何问题,实际上。