1

我在一个看起来像这样的大表中有一个 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>
4

1 回答 1

2

好的,因为您的 XML 不包含任何属性(除了名称空间),我假设您的意思是要计算<LCPId> 元素的数量。如果是这样,那么你可以这样做......

;WITH XMLNAMESPACES ('http://Reply.LeadMarketPlace.Services.Ping.ServiceContracts/2007/10/ServiceContracts' as ns) 
SELECT XmlColumn.value('(count(//ns:LCPId))','int')
FROM YourTableName

注意,我们需要使用语句来处理XML 命名空间WITH,分号不是错误的。然后我们用XPath表达式计算元素的数量count(//ns:LCPId)

您可以在此处的 SQL Fiddle 中看到它的实际应用。

于 2013-05-27T23:51:21.417 回答