gpt4 book ai didi

sql-server - 在 SQL SERVER 中查询 XML 列

转载 作者:数据小太阳 更新时间:2023-10-29 02:24:07 26 4
gpt4 key购买 nike

我在表 ALL_MRNPID3 中有以下 XML:

<Repetitions>
<Repetition>
<Field>10228^^^L8 MRN^MRN</Field>
<Component_1>10228</Component_1>
<Component_2>L8 MRN</Component_2>
<Component_3>MRN</Component_3>
</Repetition>
<Repetition>
<Field>00283^^^CMRN^CMRN</Field>
<Component_1>00283</Component_1>
<Component_2>CMRN</Component_2>
<Component_3>CMRN</Component_3>
</Repetition>
<Repetition>
<Field>00294^^^L7 MRN^MRN</Field>
<Component_1>00283</Component_1>
<Component_2>L7 MRN</Component_2>
<Component_3>MRN</Component_3>
</Repetition>
</Repetitions>

我正在尝试在 Component_3 标记中查找 CMRN 值,如果找到,则连接 Component_1Component_3 中的值 组成一个字符串。

是否可以不使用游标或循环?获取此串联字符串的最佳方法是什么?

最佳答案

这个怎么样:

SELECT
C1_and_C3 = XRep.value('(Component_1)[1]', 'varchar(50)') + XRep.value('(Component_3)[1]', 'varchar(50)')
FROM
dbo.ALL_MRN
CROSS APPLY
PID3.nodes('/Repetitions/Repetition') AS XTbl(XRep)
WHERE
XRep.value('(Component_3)[1]', 'varchar(50)') = 'CMRN'

SQL Server 2005 和更新版本对 XQuery 的支持非常好——真的不需要游标!

顺便说一句:您的 XML 无效 - 您不能有前导 <Component_3>标记并用 </Component_5> 关闭它(同样适用于 <Component_2>....</Component_4> )

关于sql-server - 在 SQL SERVER 中查询 XML 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18260309/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com