我有个表T1
字段C 是XML类型 有以下2条记录
c
--------------------
<ROWDATA><Id>JS20060828938861015</Id><BuyerOpLoginId>1</BuyerOpLoginId></ROWDATA>
<ROWDATA><Id>JS20060828939247015</Id><BuyerOpLoginId>2</BuyerOpLoginId></ROWDATA>现在想通过达到以下结果
id                  BuyerOpLoginId  
------------------------
JS20060828938861015   1
JS20060828939247015   2我用select c.value('(/ROWDATA/@id)[1]','varchar(50)') as id, c.value('(/ROWDATA/@BuyerOpLoginId)[1]','varchar(50)') as BuyerOpLoginId from t1
好象不对显示是空值

解决方案 »

  1.   

    XML帮助写的不好 没有我要的东西
      

  2.   


    select c.value('(/ROWDATA/Id)[1]','varchar(50)') as id, 
    c.value('(/ROWDATA/BuyerOpLoginId)[1]','varchar(50)') as BuyerOpLoginId 
    from t1因为你的ID和BuyerOpLoginId都是ROWDATA的子元素,不是属性,所以不需要加@。
    还有,XML是区分大小写的。
      

  3.   

    2005的帮助和2000的比起来,差的多了。
    而且看起来很不习惯!
    期待下一个版本的BOL吧~~~
      

  4.   

    因为你的ID和BuyerOpLoginId都是ROWDATA的子元素,不是属性,所以不需要加@。
    还有,XML是区分大小写的。
    ------------------------------
    我靠 那我原来写的对的 我一直在实验各种方法 到忘记大小写了
      

  5.   

    呵呵,这种东西很容易忘记的。
    因为SQL2000中很少有区分大小写这个说法的~~
      

  6.   

    用这个试试,应该没问题:select c.query('data(/ROWDATA/id)') as id, c.query('data(/ROWDATA/BuyerOpLoginId)') as BuyerOpLoginId from T1