<Root>
  <d p="U04.HP8_StmI_P.Actual" t="2011-06-23 16:00:09" v="-0.0238" s="0" />
  <d p="U04.HP8_StmI_P.Actual" t="2011-06-23 16:01:29" v="-0.0238" s="0" />
  <d p="U04.HP8_StmI_P.Actual" t="2011-06-23 16:02:49" v="-0.0238" s="0" />
</Root>
比如这样一个xml文件,要求按照t里面的时间顺序,将其所在行,例如<d p="U04.HP8_StmI_P.Actual" t="2011-06-23 16:00:09" v="-0.0238" s="0" />追加到一行字段里,比如是id为1的doc字段

解决方案 »

  1.   

    http://blog.csdn.net/herowang/article/details/4694020
      

  2.   

    DECLARE @x XML='<Root>
      <d p="U04.HP8_StmI_P.Actual" t="2011-06-23 16:00:09" v="-0.0238" s="0" />
      <d p="U04.HP8_StmI_P.Actual" t="2011-06-23 16:01:29" v="-0.0238" s="0" />
      <d p="U04.HP8_StmI_P.Actual" t="2011-06-23 16:02:49" v="-0.0238" s="0" />
    </Root>'
    --INSERT INTO t
    SELECT 
    t.c.value('@p[1]','varchar(20)') AS p,
    t.c.value('@t[1]','datetime') AS t,
    t.c.value('@v[1]','decimal(9,4)') AS v,
    t.c.value('@s[1]','int') AS s
    FROM @x.nodes('/Root/d') T(c)
    WHERE t.c.value('@t[1]','datetime') ='2011-06-23 16:00:09'
      

  3.   

    可能我表达的不是很清楚,我是希望根据t里面的时间进行排序,然后进行一个循环的追加插入,每1分钟一次,一次将一行全部插入到一个记录中,逐个追加,最后就相当于将这个xml的内容全部放入了一个记录中,这个字段的类型是varbinary(max)