我试图从存储在单个 XML 字段中的 MS-SQL Server 2008 数据库中提取四条信息。这是我第一次使用 XML,所以我遇到了一些麻烦,这就是为什么我只有要提取的数据。我尝试过使用其他帖子来解决我的问题,但显然没有运气。
这四个信息首先是“项目经理”,然后是“价值”,第二个是“利润中心”,然后是该值。 “利润中心”的值将用于在两个表之间进行联接。以下是存储在此字段中的 XML 数据的示例。
<ArrayOfEntityPropertyOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<EntityPropertyOfString>
<Name>Project Manager</Name>
<Value>DBD</Value>
</EntityPropertyOfString>
<EntityPropertyOfString>
<Name>Profit Center</Name>
<Value>211</Value>
</EntityPropertyOfString>
</ArrayOfEntityPropertyOfString>
因此,在此示例中,我需要使用“利润中心”值“211”在 MS-SQL 查询中连接两个表。该信息的表可以称为“tblProfitCenter”,保存该信息的字段可以称为“prftData”。
这是一个组成的查询,如果“prftData”中的数据不是 XML 格式,而是保存利润中心 ID 并执行连接的常规整数字段,则该查询将执行相同的工作。
SELECT md.LName, md.FName, pc.ProfitCenterName
FROM tblMainDataCenter md
LEFT OUTER JOIN tblProfitCenter pc ON md.pcID = pc.prftData
这是针对我工作的一个项目,并且需要能够超越这个范围。通常我会学习 XML 来解决这个问题,但时间不允许。在我有机会学习 XML 之前,我将不胜感激任何帮助。
您可以使用value
在 XML 列上使用函数从 XML 中提取数据,如下所示:
SELECT col.value('(/ArrayOfEntityPropertyOfString/EntityPropertyOfString[Name="Profit Center"]/Value)[1]', 'int')
FROM tbl
假设你的表被命名为tbl
XML 列被命名为col
.
第一个参数是 XPath 1 表达式,第二个参数是目标数据类型。请注意,这些字符串必须是 SQL Server 中的固定字符串,并且不能动态构建。 G。通过字符串连接。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)