【问题标题】:Parse XML field into table将 XML 字段解析为表
【发布时间】:2015-10-12 13:07:51
【问题描述】:

我正在尝试使用 SQL 将 XML 字段解析到表中,我需要一些帮助才能开始。一行的 XML 字段示例如下:

<MarketValueTransactionVo
    objectId="104" statusCode="0" acctNum="60835733" recType="6"
    errorFlag="N" sourceCode="0" userId="DATAEXCHANGE" taxItem="0"
    amount="4496.79" accountEntityType="0" transactionAmount="4496.79"
    importFormatType="5" dateEntered="01252015" clearingFirmBrokerCode="OPSX"
    formattedAmount="$4,496.79" totalShares="0" controlNumberSequence="0"
    applicableYear="2014" brokerCode="OPSX" ssn="632248334"
    entityId="OPSX" entityTypeCode="4" activityApplicationCode="3001"
    activityTypeCode="801" entityPresentationNumber="0" checkStatusCode="0"
    correctionCode="0" correctionTypeCode="0" entityLOBCode="0"
    requestPresentationNumber="0" requestStatusCode="0" reverseReasonCode="0"
    loanPresentationNumber="0">
</MarketValueTransactionVo>

【问题讨论】:

  • 示例在哪里?哪个数据库?

标签: sql xml parsing


【解决方案1】:

您想要处理 XML 标记属性。标记属性可以使用 at-sign 符号 @ 来寻址,参见示例 Import XML with Attribute to SQL Server TableConvert Xml to Table SQL Server(答案中的第二种格式):

SELECT
   Tbl.Col.value('@objectId', 'int'),  
   Tbl.Col.value('@statusCode', 'tinyint'),  
   Tbl.Col.value('@acctNum', ...proper type int? varchar(xx)? ),
   ...

FROM   @xml.nodes('//MarketValueTransactionVo') Tbl(Col)

【讨论】:

  • 我的一个赞成票和一个小小的提示:如果你不需要它,你不应该使用双斜线 (nodes('//...)。使用确切路径处理元素总是更好。在一个你永远不知道的更复杂的场景中,如果一个元素的名称没有在更深层次上重复......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-25
  • 1970-01-01
相关资源
最近更新 更多