SQL Server查询元素值的xml属性
发布时间:2020-12-12 06:29:03 所属栏目:MsSql教程 来源:网络整理
导读:对不起,如果这是在其他地方,我发现了很多类似的例子,但我一直无法使用我的数据. 2天后,我需要一个答案:( 基本上有一个SQL Server表,其中包含一个包含XML数据的列.此数据包含我需要提取的值. 这是我的XML. CustomFields xmlns:xsi="http://www.w3.org/2001/XML
对不起,如果这是在其他地方,我发现了很多类似的例子,但我一直无法使用我的数据. 2天后,我需要一个答案:(
基本上有一个SQL Server表,其中包含一个包含XML数据的列.此数据包含我需要提取的值. 这是我的XML. <CustomFields xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.kaseya.com/vsa/2007/12/ServiceDeskDefinition.xsd"> <Field fieldName="AutoCategory">Event Log</Field> <Field fieldName="SType">Event Log</Field> <Field fieldName="STag1">AgentGuid</Field> <Field fieldName="STag2">AlertRegistrationId</Field> <Field fieldName="STag3">LogType</Field> <Field fieldName="SValue1">619764177412541</Field> <Field fieldName="SValue2">104</Field> <Field fieldName="SValue3">1380569194</Field> <Field fieldName="SdTicketId">RPSv1006330</Field> <Field fieldName="AgentName">bla bla</Field> <Field fieldName="MachineGroupGuid">86115414719112271316891312</Field> <Field fieldName="OrgFk">59165166782128125214185317</Field> <Field fieldName="GuidAgent">619764177412541</Field> <Field fieldName="AlertCount">0</Field> <Field fieldName="TicketTitle">bla bla</Field> <Field fieldName="LegacyId">152262</Field> <Field fieldName="LegacyRef">152262</Field> <Field fieldName="CwStatus">2</Field> <Field fieldName="CwTicketId">89495</Field> </CustomFields> 我需要能够提取与CwTicketId字段名称关联的值. 所以从本质上讲,我想通过XML来查找具有fieldName =“CwTicketId”的节点并返回89495或等效值. 下面是我自己提出的代码,它将值拉出来,但问题是有时XML的排序方式不同,因此值并不总是在我指定的行上,因此它返回准确的数据. ;WITH XMLNAMESPACES(DEFAULT N'http://www.kaseya.com/vsa/2007/12/ServiceDeskDefinition.xsd') SELECT ref as ServiceDeskID,sdSummary as ServiceDeskSummary,customFields.value('(/CustomFields/Field/node())[17]','varchar(100)') as LegacyIDTicketing,customFields.value('(/CustomFields/Field/node())[19]','varchar(100)') as CWIDTicketing FROM [ksubscribers].[kasadmin].[SDIncident] 第二个值我也需要,但如果我能弄清楚如何拉出一个值,我可以复制另一个. 希望有人可以提供帮助,因为我已经开始撕掉我的头发了! 谢谢您的帮助!! 解决方法;WITH XMLNAMESPACES(DEFAULT N'http://www.kaseya.com/vsa/2007/12/ServiceDeskDefinition.xsd') select T.C.value('data(.)','nvarchar(128)') from [YOUR_TABLE] as Y outer apply Y.[YOUR_XML_COLUMN].nodes('/CustomFields/Field[@fieldName="CwTicketId"]') as T(C) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |