首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免在SQL中存储XML <option></option> like <option />?

如何避免在SQL中存储XML <option></option> like <option />?
EN

Stack Overflow用户
提问于 2013-05-29 05:57:43
回答 2查看 429关注 0票数 2

当我尝试在SQL中存储XML而不是有一个空元素时,SQL只是更改它,并使用该元素的一个标记来存储它。例如,要存储的XML为:

代码语言:javascript
复制
<ROOT>
    <FIRSTNAME>ROGER</FIRSTNAME>
    <MIDDLENAME></MIDDLENAME>
</ROOT>

然后Sql将其存储为

代码语言:javascript
复制
    <ROOT>
        <FIRSTNAME>ROGER</FIRSTNAME>
        <MIDDLENAME />
    </ROOT>

sql更新非常简单:

代码语言:javascript
复制
UPDATE 
    SESIONESREPORTES
   SET 
    SER_PARAMETROS = '
        <ROOT>
               <FIRSTNAME>ROGER</FIRSTNAME>
               <MIDDLENAME></MIDDLENAME>
        </ROOT>'
 WHERE SER_ID=7

我需要这样,因为当一个元素为空时,我有一些查询失败,你可以在这里看到它。

Merging many rows in a single

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-29 19:56:56

代码语言:javascript
复制
<MIDDLENAME></MIDDLENAME>

代码语言:javascript
复制
<MIDDLENAME/>

是等价的;任何XML解析器都会将它们视为一个空元素。如果您的查询在一个空元素上失败,那么它将在这两个元素中的任何一个上失败。您需要重写查询以处理空元素,在<MIDDLENAME>元素中添加一些内容,或者完全省略该元素(如果您的查询能够处理它的缺失)。

票数 2
EN

Stack Overflow用户

发布于 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)

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

https://stackoverflow.com/questions/16802163

复制
相关文章

相似问题

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