declare @mydoc xml
set @mydoc = '
<AAA>
  <BBB>222</BBB>
  <BBB/>
  <CCC>
    <DDD/>
    <BBB>
       <EEE>77
       </EEE>
    </BBB>
   </CCC>
</AAA>'select @mydoc.query('//BBB[1]')结果为什么不是<BBB>222</BBB>呢? 这个[1]到底代表什么意思? 

解决方案 »

  1.   

    select @mydoc.query('AAA/BBB[1]')
      

  2.   

    '//BBB[1]'  代表什么意思呢 ??
      

  3.   

    //指定路徑 所有名為BBB的字元素
    /AAA/BBB 指定路徑下AAA下的BBB元素 
      

  4.   


    返回值大於1個時,返加序列中的第一個建議樓主看一下xml的用法,在聯機上有例子
      

  5.   

    这样理解的话select @mydoc.query('//BBB[1]') 结果应该是 <BBB>222 </BBB>才对啊,可是事实上不是啊 
      

  6.   

    在4樓已講過了
    最好看一些xml資料
      

  7.   

    select @mydoc.query('//BBB')
    结果为<BBB>222 </BBB> --------[1]
         <BBB/>    --------------[2]
         <BBB> ------------------[3]
           <EEE>77 
           </EEE> 
         </BBB> 上面的[1][2][3]是我的理解,也就是说//BBB[1]的结果应该是<BBB>222 </BBB>
    但是实际上//BBB[1]的结果却是<BBB>222 </BBB>
                              <BBB> 
                                 <EEE>77 
                                 </EEE> 
                              </BBB> 
    我理解中的[3]也在[1]的结果里,不理解这是为什么不知道我的问题描述清楚没有?
      

  8.   

    select @mydoc.query('(//BBB)[1]') 
      

  9.   

    一语点醒梦中人非常精准 Thank you