value方法中中的参数xquery怎么解释?
比如:
DECLARE @s VARCHAR(100)
SET @s='a,b,c,dd,ee,f,aa,a,aa,f'
SELECT b.v FROM
    (SELECT CAST('<r>' + REPLACE(@s,',','</r><r>') + '</r>' AS XML) x) a 
CROSS APPLY
    (SELECT v=t.x.value('.','VARCHAR(10)') FROM a.x.nodes('//r') AS t(x) ) b
value方法中的'.'是什么意思?
DECLARE @myDoc xml
DECLARE @ProdID int
SET @myDoc = '<Root>
<ProductDescription ProductID="1" ProductName="Road Bike">
<Features>
  <Warranty>1 year parts and labor</Warranty>
  <Maintenance>3 year parts and labor extended maintenance is available</Maintenance>
</Features>
</ProductDescription>
</Root>'SET @ProdID =  @myDoc.value('(/Root/ProductDescription/@ProductID)[1]', 'int' )
SELECT @ProdID
value中的'[1]'是什么意思?
希望能有比较详细的解释。

解决方案 »

  1.   

    网上搜大把的。/          从根节点选取。 
    //         从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 
    .          选取当前节点。 
    ..         选取当前节点的父节点。 
    @          选取属性。 /bookstore/book[1]              选取属于 bookstore 子元素的第一个 book 元素。 
    /bookstore/book[last()]        选取属于 bookstore 子元素的最后一个 book 元素。 
    /bookstore/book[last()-1]      选取属于 bookstore 子元素的倒数第二个 book 元素。 
    /bookstore/book[position()<3]  选取最前面的两个属于 bookstore 元素的子元素的 book 元素。 
      

  2.   

    参考 http://blog.csdn.net/happyflystone/article/details/4402574
      

  3.   

    先做  .nodes, 得到 //r 的所有 node, 这个 nodes 展示为表 T , 列c
    然后针对表中的每个 node 取 value,  也就是 T.c.value , 取里面的 xpath 表示的值, 使用的是 ., 也就是当前 node所以总的来说, 就是取每个 //r 的 node 的值