代码之家  ›  专栏  ›  技术社区  ›  Ralph Shillington

从xml列中选择一个值

  •  0
  • Ralph Shillington  · 技术社区  · 15 年前

    查询的重要部分如下所示:

    with XMLNAMESPACES(default 'http://www.mrq.gouv.qc.ca/T5')
    select xmldata.value('(//Groupe02/*/Montants/B_PrestREER_FERR_RPDB)[1]', 'decimal(16,2)');
    

    Groupe02和Montants之间的通配符可以是dr或T中的任意一个(即一个字母的元素名)

    问题是我需要查询,只选择A,D或R节点,而不是T节点。作为第一个猜测,我试着:

    with XMLNAMESPACES(default 'http://www.mrq.gouv.qc.ca/T5')
    select @x.value('(//Groupe02/A|D|R/Montants/B_PrestREER_FERR_RPDB)[1]', 'decimal(16,2)');
    

    但是失败了,错误是“XQuery语法'union'不受支持”

    还有什么其他可能的方法来进行这样的查询呢。

    1 回复  |  直到 15 年前
        1
  •  3
  •   dnagirl    15 年前

    我认为使用 [name()!='T'] 可能有用。例如。

    select @x.value("(//Groupe02/*[name()!='T']/Montants/B_PrestREER_FERR_RPDB)[1]", 'decimal(16,2)');