You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL XML查询:提取节点值及子节点CSV格式值求助

从XML提取节点值并将子节点转为CSV格式

你的SQL无法正确获取子节点的原因有两个:

  • 使用了绝对路径/SynonymList/uytfu/*,而应该用相对于当前Disorder节点的相对路径
  • 路径中包含无效节点名uytfu,实际子节点是SynonymList/Synonym

以下是修正后的SQL语句:

declare @x XML = (select * from OPENROWSET(bulk 'C:\SQLBulkLoad\OrphaNet\XML\OrphaTable\en_product1_Small.xml', single_blob) as T (MY_XML));

select
    item.value('(OrphaCode)[1]', 'NVARCHAR(MAX)') as OrphaCode,
    STUFF((
        SELECT ',' + x.value('.', 'NVARCHAR(MAX)') 
        FROM item.nodes('SynonymList/Synonym') AS y(x) 
        FOR XML PATH(''), TYPE
    ).value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS Symptoms
FROM @x.nodes('JDBOR/DisorderList/Disorder') AS items(item);

关键修改说明:

  • 提取OrphaCode时直接使用value()方法,比query().value()更简洁高效
  • 子查询中改用相对路径SynonymList/Synonym定位同义词节点
  • 添加TYPE关键字并二次调用value(),避免特殊字符被XML转义(如&、<等)

执行结果:

OrphaCodeSymptoms
585Austin disease,MSD,Mucosulfatidosis
118Beta-mannosidase deficiency

内容的提问来源于stack exchange,提问作者EldritchText

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 14:52:04