declare @t table ( contenct xml)insert into @t select 
'<catalog>
<product dept="WMN">
<number>557</number>
<name language="en">Fleece Pullover</name>
<colorChoices>navy black</colorChoices>
</product>
<product dept="ACC">
<number>563</number>
<name language="en">Floppy Sun Hat</name>
</product>
<product dept="ACC">
<number>443</number>
<name language="en">Deluxe Travel Bag</name>
</product>
<product dept="MEN">
<number>784</number>
<name language="en">Cotton Dress Shirt</name>
<colorChoices>white gray</colorChoices>
<desc>Our <i>favorite</i> shirt!</desc>
</product>
</catalog>'SELECT contenct.query(
'for $prod in /catalog/product
where $prod/@dept = "ACC"
order by $prod/number 
return $prod/number'
) from @t

解决方案 »

  1.   

    declare @t table ( contenct varchar(1000)) 
      

  2.   

    对XML不熟,我试了去掉order by 可以执行,供参考.
    declare @t table ( contenct xml) insert into @t select 
    ' <catalog> 
    <product dept="WMN"> 
    <number>557 </number> 
    <name language="en">Fleece Pullover </name> 
    <colorChoices>navy black </colorChoices> 
    </product> 
    <product dept="ACC"> 
    <number>563 </number> 
    <name language="en">Floppy Sun Hat </name> 
    </product> 
    <product dept="ACC"> 
    <number>443 </number> 
    <name language="en">Deluxe Travel Bag </name> 
    </product> 
    <product dept="MEN"> 
    <number>784 </number> 
    <name language="en">Cotton Dress Shirt </name> 
    <colorChoices>white gray </colorChoices> 
    <desc>Our <i>favorite </i> shirt! </desc> 
    </product> 
    </catalog>' SELECT contenct.query( 
    'for $prod in /catalog/product 
    where $prod/@dept = "ACC" 
     
    return $prod/number' 
    ) from @t
      

  3.   

    恩 我知道去掉orderby 可以执行 我想知道是为什么 因为这个xquery 是没有错误的,但是在sql里为啥不知道呢。
    sql里面有什么要求吗