SQL Server XML DataType 扼杀了我的 CDATA 部分

问题描述

我有一个包含 XML 数据类型的列的表。

CREATE TABLE Employee
(
  ID INT,Name VARCHAR(200),ExtraInfo XML
)

我必须为 ExtraInfo 列使用 XML 数据类型,并且我有以下 INSERT 语句

INSERT INTO Employee
VALUES 
(1,'John Doe',CONVERT(XML,'<root><section><![CDATA[Some weird content with weird characters (*&#^@$]]></section></root>'))

执行上述语句后,我在 ExtraInfo 列中得到以下内容

<root>
  <section>Some weird content with weird characters (*&amp;#^@$</section>
</root>

如何保持我的 CDATA 部分完整?

我已经检查了 other related question,这不是我想要的。

解决方法

我实际上是在从 Microsoft 那里寻找一些东西,说明 XML 数据类型不支持 CDATA 部分。

这里是:How to get [CDATA] with FOR XML PATH?

引用 Michael Rys 的话,他在 Microsoft 负责 SQL Server 中的大部分 XML 内容:

XML 数据类型不保留 CDATA 部分...它是 W3C XQuery 建议它不保留 CDATA 部分。