回答

收藏

SQL Server查询xml属性中的元素值

技术问答 技术问答 132 人阅读 | 0 人回复 | 2023-09-13

抱歉,如果还有其他地方,我发现了很多类似的示例,但无法将其用于我的数据。2天后,我需要一个答案( @: ]/ ~9 Q3 x6 {" e2 p6 s
基本上有一个SQL Server表,其中的列包含XML数据。此数据包含我需要提取的值。
$ X8 w' H6 K+ j3 c" X4 J7 ?' w这是我的XML。
- r+ O# N1 ^: _4 c* R  9 W' L* I/ J, E) K3 J: J( ?# [
    Event Log  G: S! M; K% Z4 ^3 Y: X1 h& N
    Event Log' ?4 h* s- l3 N- }+ u3 q. w$ F" J& G
    AgentGuid
: o4 a3 I. `0 e1 u- L7 L" [    AlertRegistrationId
( P$ K/ B- a' P5 r    LogType3 K+ c5 M5 }( Z  g5 L& H: [
    619764177412541
8 p; {7 @$ p8 v' m+ G2 [    104+ n) E) H1 m8 A0 V& H
    1380569194
2 j* o7 K; m0 P5 \, s2 Y    RPSv1006330
& h/ C2 Y8 ^0 j7 a, o5 X- z    bla bla% K' t4 Z3 K/ d# ^, f) h# d
    86115414719112271316891312
1 o1 c- C! p1 D1 T7 j" d. @    59165166782128125214185317
3 L+ L+ M. }& w    619764177412541# a1 W% i( M8 S. n( k1 C+ J
    07 b7 e! e* j; W; x
    bla bla
1 l$ G8 D+ Q! [5 H, w" p* k    152262
: y6 `+ A, J3 ?2 v* s    152262/ a: i/ a& ?6 V+ _
    2
, L0 O' I: l0 H4 _  Q( Z5 S    894953 q1 _" I4 _# Q  B9 S7 ^

% n2 C# B9 h# M# {5 l- M4 |我需要能够提取与CwTicketId字段名称关联的值。3 D0 ^2 p- y" z: P7 f' b
因此,从本质上讲,我想浏览XML以找到具有的节点fieldName = "CwTicketId"并返回89495或等效值。
" ~) T4 `8 X+ @2 v0 B" @7 w下面是我自己编写的代码,这些代码提取了值,但是问题是XML有时以不同的顺序排列,因此值并不总是在我指定的行上,因此它返回准确的数据。
6 m$ V: b- r- ?1 W;WITH XMLNAMESPACES(DEFAULT N'http://www.kaseya.com/vsa/2007/12/ServiceDeskDefinition.xsd')" V$ p5 F/ T* B  G. L: K0 o
SELECT
) q3 Z3 ~/ c2 B! ?& J- V( }; _    ref as ServiceDeskID,   I8 T: g, M& d* b, M" t8 l
    sdSummary as ServiceDeskSummary,* k+ B6 N' [% r: B# c
    customFields.value('(/CustomFields/Field/node())[17]', 'varchar(100)') as LegacyIDTicketing,! a) s3 {, w2 o* W) p
    customFields.value('(/CustomFields/Field/node())[19]', 'varchar(100)') as CWIDTicketing* K3 C, o* P7 T  c; e1 M0 ]6 t9 l
FROM
$ T+ B# ], {4 w6 B- _* l    [ksubscribers].[kasadmin].[SDIncident]3 [! e; A* ^  ~  ]5 O- h
我还需要第二个值,但是如果我能弄清楚如何提取一个值,则可以为另一个值重复。
, T" _5 X: |7 m* h希望有人能帮到我,因为我已经开始撕头发了!+ }" e" O! O. }) x" A6 F
谢谢您的帮助!!* c6 b) S+ W2 Z2 l. u. F
               
& Z/ `$ K2 ~2 m# a! y8 K& O解决方案:% d6 K5 B0 o* G2 g% v& \  c
                8 E1 e1 O1 ?$ _1 H
4 M2 j( a' c# ?+ F/ U$ q, @1 f

; m6 C9 x- F/ {                ;WITH XMLNAMESPACES(DEFAULT N'http://www.kaseya.com/vsa/2007/12/ServiceDeskDefinition.xsd')
' H% ^* e/ O( y) O* Iselect
$ k8 E2 A7 c3 b/ c    T.C.value('data(.)', 'nvarchar(128)')+ |' Q' p/ o) x0 x
from [YOUR_TABLE] as Y. g6 I; a, ~# h0 I; W9 _- i
    outer apply Y.[YOUR_XML_COLUMN].nodes('/CustomFields/Field[@fieldName="CwTicketId"]') as T(C)
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则