Sql server 将XML分解到SQLServer2008表中
我很难弄清楚如何在数据库中将XML字符串拆分为列。我有一个如下所示的XML字符串。我想知道使用SQLServer2008实现这一点的最有效方法Sql server 将XML分解到SQLServer2008表中,sql-server,xml,Sql Server,Xml,我很难弄清楚如何在数据库中将XML字符串拆分为列。我有一个如下所示的XML字符串。我想知道使用SQLServer2008实现这一点的最有效方法 <DATA> <Message Action="UPDATE" MessageDate="2015-06-27T19:91:00" Type="TXT" ControlID="Q385906345T373566011"/> <Facility FacilityCode="ORBIT" FacilityDescri
<DATA>
<Message Action="UPDATE" MessageDate="2015-06-27T19:91:00" Type="TXT" ControlID="Q385906345T373566011"/>
<Facility FacilityCode="ORBIT" FacilityDescription="Sending Facility"/>
<SourceSystem HISCode="MILLENNIUM" Description="TKNOWN3"/>
<EVN Event="P03" Recorded="2015-06-27T00:00:00"/>
<EMPLOYEE>
<Employee BirthDate="2014-08-09T00:00:00" Gender="F" MarkedForDelete="0" LastName="CASTILLO" FirstName="TIMA" Type="MILLE_1367289"/>
</EMPLOYEE>
<SUB1>
<Encounter MarkedForDelete="0" A03Received="0">
<Location CARE="SUR-R6"/>
</Encounter>
</PV1>
<FT1 SetID="1" TransactionID="2250382928" Date="2015-06-27T00:00:00" Type="CG" Code="74020" Description="DX V" Quantity="1" DepartmentCode="RAA">
<ProcedureCodeModifier ModifierID="16"/>
<PerfBy PerfByCode="17300" PerfByFamilyName="Chap" PerfByGivenName="Teresa"/>
<OrdBy OrdCode="32289" OrdLastName="Hofman" OrdFirstName="Sarah"/>
</FT1>
</DATA>
先谢谢你
这是我正在获取的数据,我正试图找到一种方法将其解析为列,如FacilityCode
,EmployeeLastName
,DepartmentCode
,。。。等等。研究XML数据类型的SQL Server方法,并学习一些XQuery/XPath表达式。这是演示的一个工作示例:
declare @xml XML = '<DATA>
<Message Action="UPDATE" MessageDate="2015-06-27T19:91:00" Type="TXT" ControlID="Q385906345T373566011"/>
<Facility FacilityCode="ORBIT" FacilityDescription="Sending Facility"/>
<SourceSystem HISCode="MILLENNIUM" Description="TKNOWN3"/>
<EVN Event="P03" Recorded="2015-06-27T00:00:00"/>
<EMPLOYEE>
<Employee BirthDate="2014-08-09T00:00:00" Gender="F" MarkedForDelete="0" LastName="CASTILLO" FirstName="TIMA" Type="MILLE_1367289"/>
</EMPLOYEE>
<PV1>
<Encounter MarkedForDelete="0" A03Received="0">
<Location CARE="SUR-R6"/>
</Encounter>
</PV1>
<FT1 SetID="1" TransactionID="2250382928" Date="2015-06-27T00:00:00" Type="CG" Code="74020" Description="DX V" Quantity="1" DepartmentCode="RAA">
<ProcedureCodeModifier ModifierID="16"/>
<PerfBy PerfByCode="17300" PerfByFamilyName="Chap" PerfByGivenName="Teresa"/>
<OrdBy OrdCode="32289" OrdLastName="Hofman" OrdFirstName="Sarah"/>
</FT1>
</DATA>'
SELECT
@xml.value('(/DATA/Message/@Action)[1]', 'varchar(100)') as Action
, @xml.value('(/DATA/Message/@Type)[1]', 'varchar(100)') as Type
, @xml.value('(/DATA/EVN/@Event)[1]', 'varchar(100)') as Event
, @xml.value('(/DATA/FT1/@TransactionID)[1]', 'varchar(100)') as TransactionID
您是否可以添加预期的表格格式resultAction类型事件事务ID更新TXT P03 2250382928,这是完美的。。。这回答了我的问题。对xquery/path材料有什么建议吗?
| Action | Type | Event | TransactionID |
|--------|------|-------|---------------|
| UPDATE | TXT | P03 | 2250382928 |