当我尝试在SQL中存储XML而不是有一个空元素时,SQL只是更改它,并使用该元素的一个标记来存储它。例如,要存储的XML为:
<ROOT>
<FIRSTNAME>ROGER</FIRSTNAME>
<MIDDLENAME></MIDDLENAME>
</ROOT>然后Sql将其存储为
<ROOT>
<FIRSTNAME>ROGER</FIRSTNAME>
<MIDDLENAME />
</ROOT>sql更新非常简单:
UPDATE
SESIONESREPORTES
SET
SER_PARAMETROS = '
<ROOT>
<FIRSTNAME>ROGER</FIRSTNAME>
<MIDDLENAME></MIDDLENAME>
</ROOT>'
WHERE SER_ID=7我需要这样,因为当一个元素为空时,我有一些查询失败,你可以在这里看到它。
发布于 2013-05-29 19:56:56
<MIDDLENAME></MIDDLENAME>和
<MIDDLENAME/>是等价的;任何XML解析器都会将它们视为一个空元素。如果您的查询在一个空元素上失败,那么它将在这两个元素中的任何一个上失败。您需要重写查询以处理空元素,在<MIDDLENAME>元素中添加一些内容,或者完全省略该元素(如果您的查询能够处理它的缺失)。
发布于 2013-05-29 17:02:47
我不认为你可以,看看下面的链接:
XML Data Type and Columns
根据这一点(XML存储选项部分):
XML数据存储在内部表示形式中,该内部表示形式保留了数据的
内容。这种内部表示包括有关包含层次结构、文档顺序以及元素和属性值的信息。具体地说,保留了XML数据的InfoSet内容。有关InfoSet的更多信息,请访问http://www.w3.org/TR/xml-infoset。InfoSet内容可能不是文本XML的相同副本,因为没有保留以下信息:无关紧要的空格、属性的顺序、命名空间前缀和XML声明。
因此,内部存储将去掉它认为不必要的所有部分,文档接着声明,如果需要XML文档的精确副本,而不仅仅是内容,则应该使用nvarchar(max)或varbinary(max)
https://stackoverflow.com/questions/16802163
复制相似问题