我在一个大表中有一个XML列,看起来像这样,在TSQL中我如何计算属性(LCPID)发生的次数?
谢谢,
代码:
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<PingAutoRequest xmlns="http://Reply.LeadMarketPlace.Services.Ping.ServiceContracts/2007/10/ServiceContracts">
<AutomotiveLead>
<LCPId>766</LCPId>
<Zipcode>33544</Zipcode>
<Make>Ford</Make>
<Model>Escape</Model>
<LeadType>New</LeadType>
<Year>2013</Year>
<Trim>FWD S</Trim>
<ExteriorColor />
<InteriorColor />
<Transmission />
<TradeIn>false</TradeIn>
<LastFourPhoneDigits />
<LastName />
</AutomotiveLead>
</PingAutoRequest>
</soap:Body>
</soap:Envelope>
答案 0 :(得分:2)
好的,因为您的XML不包含任何attributes(除了命名空间),我将假设您想要计算<LCPId>
elements的数量。如果是这样,那么你就可以这样做......
;WITH XMLNAMESPACES ('http://Reply.LeadMarketPlace.Services.Ping.ServiceContracts/2007/10/ServiceContracts' as ns)
SELECT XmlColumn.value('(count(//ns:LCPId))','int')
FROM YourTableName
注意,我们需要处理XML namespace using the WITH
statement,分号不是错误的。然后我们使用XPath表达式count(//ns:LCPId)
来计算元素的数量。
您可以在SQL Fiddle here中看到它。