【发布时间】:2019-03-15 17:04:36
【问题描述】:
我正在尝试从列中解析 XML 以将其添加到报告视图中,但我不知道名称空间。它可能更复杂,因为 XML 中的字段仅在基础应用程序中使用该字段时才创建。 我试图从 Custom# 列解析 XML 的 pfm.Entity 表由以下列构成:
[RootId#] ,[Id#] ,[LastId#] ,[Guid#] ,[Custom#] ,[Type#]
我的目标是将 Custom# 中包含的 XML 解析为列,以便我可以在 RootId# 字段中将表与其他人连接起来。下面是我正在测试的选择语句:
WITH XMLNAMESPACES ('http://www.w3.org/2001/XMLSchema' as ns)
SELECT TOP (1000)
Custom#.value('(/ns:Fields/ns:Field)[1]', 'VARCHAR(50)') AS xmlfield
FROM
[SelectDb].[pfm].[Entity]
我的猜测是,我需要使用以下内容进行选择,但这会在 # 字符上引发错误。
SELECT
Custom#.value('(/ns:Fields/ns:MarketingSrcPercentage_901419#)[1]', 'VARCHAR(50)') AS mktsrcp
以下是字段中 XML 的两个示例。请记住,在某些行中 this 也为 NULL。
<Fields>
<Field name="PurchaseDate_NJ#">6/11/2018</Field>
<Field name="AddOrImpDate_NJ#">8/1/2018</Field>
<Field name="AffidavitAddOrExcep_NJ#">nfui fevtt[th40thijfkrkl grwgr ijg rgmrk gmkmr pkgi</Field>
<Field name="DateOfPropertyAcquisition_DC#">8/7/2018</Field>
<Field name="AuthorizedAppointedAgent_PA#">NAME OF PERSON AUTHORIZED/APPONTED AGENT PROMPT BOX</Field>
<Field name="SpouseWaivingMaritalRights_PA#">NAME OF SPOUSE WAIVING MARTIAL RIGHTS PROMPT BOX</Field>
<Field name="PersonalFunds_TXFA#">true</Field>
<Field name="Currency_TXFA#">true</Field>
<Field name="CashiersCheck_TXFA#">true</Field>
<Field name="TravelersCheck_TXFA#">true</Field>
<Field name="MoneyOrder_TXFA#">true</Field>
<Field name="BusinessCheck_TXFA#">true</Field>
<Field name="PersonalCheck_TXFA#">true</Field>
<Field name="BankruptcyFilings_NY#">true</Field>
</Fields>
和
<Fields>
<Field name="">1</Field>
<Field name="MarketingSrcPercentage_901419#">1</Field>
<Field name="MarketingRep1Name_901419#">Brian</Field>
</Fields>
如果有帮助,这是 SoftPro Select 的数据库。我查看了他们的文档,但没有找到任何帮助。
编辑:添加了更清晰的源表定义。
【问题讨论】:
标签: sql-server xml