none
sql server for xml 的问题 RRS feed

  • 问题

  • SQL如下 :

    SELECT  Name ,
            Description
    FROM    #a t
    FOR     XML AUTO

    结果如下:

    <t Name="HY1" Description="3万&#x0;" />
    <t Name="LH1" Description="320万&#x0;" />
    <t Name="NH1" Description="250万&#x0;" />
    <t Name="PP1" Description="20万" />
    <t Name="PS1" Description="12万&#x0;" />
    <t Name="PS2" Description="1万" />
    <t Name="RA1" Description="220万" />
    <t Name="SU1" Description="1万&#x0;" />
    <t Name="UBA" Description="" />
    <t Name="VA1" Description="600万" />

    为什么生成的XML文件中,有“&#x0”字符呢?它不能赋给另一个XML变量,就是这个字符串的原因;

    请问怎么解决?原有的数据是没有这些字符串的;


    大其心,可容天下之物; 虚其心,可受天下之善;


    • 已编辑 lfofiug 2013年9月24日 7:56
    2013年9月24日 7:55

答案

  • 这是你表中的数据包含特殊字符导致的,不是 xml 处理的问题,你需要去掉这种 xml 不支持的字符

    例如,下面的数据中,第一列我在字符串后面加了一个特殊字段,出来的 xml 数据就包含 &#x0

    select *
    from(
    	select col='a' + char(0) union all
    	select col='b'
    )a
    for xml auto

    2013年9月24日 8:58

全部回复

  • 去掉空子符之类的有没有问题? 另外比如12万这个数据在数据库中是如何存储的?

    Please Mark As Answer if it is helpful.

    • 已建议为答案 KevinLiu328 2013年9月26日 23:28
    • 取消建议作为答案 KevinLiu328 2013年9月26日 23:29
    2013年9月24日 8:32
  • 这是你表中的数据包含特殊字符导致的,不是 xml 处理的问题,你需要去掉这种 xml 不支持的字符

    例如,下面的数据中,第一列我在字符串后面加了一个特殊字段,出来的 xml 数据就包含 &#x0

    select *
    from(
    	select col='a' + char(0) union all
    	select col='b'
    )a
    for xml auto

    2013年9月24日 8:58