如何从Sqlserver中的xml列获取指定属性
我的数据库中有一个名为MessageContent的xml列,如下所示:如何从Sqlserver中的xml列获取指定属性,xml,xquery-sql,Xml,Xquery Sql,我的数据库中有一个名为MessageContent的xml列,如下所示: <ns1:ProductAvailabilityPublication xmlns:ns0="http://www.example.com/Ecommerce/Worldwide/AvailabilityService/Schemas/ProductResponse" xmlns:ns2="http://www.example.com/Ecommerce/Worldwide/AvailabilityService/S
<ns1:ProductAvailabilityPublication xmlns:ns0="http://www.example.com/Ecommerce/Worldwide/AvailabilityService/Schemas/ProductResponse" xmlns:ns2="http://www.example.com/Ecommerce/Worldwide/AvailabilityService/Schemas/ProductRequest" xmlns:ns1="http://www.example.com/Ecommerce/Worldwide/AvailabilityService/Schemas/ProductAvailabilityPublish" RequestorID="WCS_AU" BatchID="36dae836-cc16-489c-8009-afab63f92dff">
<ns0:ProductResponse ProductNumber="C8010A" LeadTime="1" LastUpdated="2014-07-18T11:17:47.677" Region="AP" CountryCode="AU" CurrInv="259" FutureInv="0" CurrEDD="TBA" FutureEDD="TBA" ETA="0" D-Flag="True">
<ns0:ProductType>
<ns2:NonStartingPoint />
</ns0:ProductType>
<ns0:Status>
<ns0:Success />
</ns0:Status>
</ns0:ProductResponse>
<ns0:ProductResponse ProductNumber="Q3655A" LeadTime="1" LastUpdated="2014-07-18T11:17:47.677" Region="AP" CountryCode="AU" CurrInv="2" FutureInv="0" CurrEDD="TBA" FutureEDD="TBA" ETA="0" D-Flag="True">
<ns0:ProductType>
<ns2:NonStartingPoint />
</ns0:ProductType>
<ns0:Status>
<ns0:Success />
</ns0:Status>
</ns0:ProductResponse>
<ns0:ProductResponse ProductNumber="PP654A" LeadTime="21" LastUpdated="2014-07-18T11:17:47.677" Region="AP" CountryCode="AU" CurrInv="0" FutureInv="0" CurrEDD="TBA" FutureEDD="TBA" ETA="0" D-Flag="False">
<ns0:ProductType>
<ns2:NonStartingPoint />
</ns0:ProductType>
<ns0:Status>
<ns0:Success />
</ns0:Status>
</ns0:ProductResponse>
</ns1:ProductAvailabilityPublication>
现在我想找出curriv>0和D-flag=True记录中的所有ProductNumber。我试过了,但只能找到包含不需要的数据的整个xml列。是否可以计算出满足我的表达式的所有ProductNumber?以下XQuery应该可以工作。您需要绑定正确的命名空间或使用命名空间通配符*而不是特定的命名空间:
//ns0:ProductResponse[@CurrInv > 0][@D-Flag = "True"]/@ProductNumber/string()
人们怎么知道你所说的ProductNumber、Curriv和D-flag的位置?发布示例XML,并根据该示例进行解释,以使您的问题易于理解。很抱歉,在添加代码标记时,我不知道如何在代码中添加换行符,但根本没有任何换行符。您最好只发布XML,使用{}工具缩进4个空格。