【问题标题】:xml.value()in Xquery only returns 1 recordXquery 中的 xml.value() 只返回 1 条记录
【发布时间】:2018-08-10 05:34:57
【问题描述】:

我在 xml 文件中有多个“abc”节点,但它返回第一行的值,因为我们指定了 [1] ,如果我写 [2] ,它返回第二行。

我想在所有“abc”循环中返回“Element”的所有值。

使用的查询:

Insert Into @temp(aa,bb)
SELECT 
y.b.value('(abc/Segment/Element)[1]', 'NVARCHAR(50)') ,
y.b.value('(abc/Segment/Element)[1]', 'NVARCHAR(50)') 
FROM @x.nodes('(a1/b1/c1)') AS y(b)

Below Query 给出了想要的结果,但我无法使用该查询,因为我需要在同一查询中从位置 a1/b1/c1 访问其他字段

Insert Into @temp(aa,bb)
SELECT 
y.b.value('(Segment/Element)[1]', 'NVARCHAR(50)') ,
y.b.value('(Segment/Element)[1]', 'NVARCHAR(50)') 
FROM @x.nodes('(a1/b1/c1/abc)') AS y(b)

【问题讨论】:

    标签: sql-server xquery-sql


    【解决方案1】:

    y.b 上使用cross apply 来获取abc 的行。

    select z.b.value('(Segment/Element)[1]', 'nvarchar(50)') ,
           z.b.value('(Segment/Element)[1]', 'nvarchar(50)') 
    from @x.nodes('(a1/b1/c1)') as y(b)
      cross apply y.b.nodes('abc') as z(b);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-28
      • 2010-11-06
      • 1970-01-01
      • 2023-03-27
      • 2016-05-22
      • 2018-09-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多