计算属性的出现次数?

时间:2013-05-27 21:43:05

标签: sql-server xml tsql select

我在一个大表中有一个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>

1 个答案:

答案 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中看到它。