查询具有相同名称的多个节点的XML,其中节点并非总是按相同的顺序

时间:2019-07-12 20:32:43

标签: sql xml xquery

我有一个XML,它的多个节点处于同一级别,我每次都尝试查询相同的元素,但是有时该元素可以是element [5]或element [6]甚至是7,具体取决于用户实际填写了

尝试XMLData.query('//ticket/sections/section[@name="Incident"]/group[@id=25]/ticket-input[6]/values/value/enum_val/name')

及其一些变体,但是一些记录在tiecket输入[6]中包含信息,而其他记录在3到7之间,有一个唯一的96或685标识正确的节点(因此我可以到达子节点) ,但是在下面使用我无法对其进行过滤:

XMLData.query('//ticket/sections/section[@name="Incident"]/group[@id=25]/ticket-input/id=96/values/value/enum_val/name') 
    AS billing
FROM
  XMLwithOpenXML

XML数据:

    <section id="12" position="3" name="Incident" kind="Basic">
      <group id="58" name="Facility Location">
      </group>
      <group id="25" name="Incident Location">
<ticket-input>
  <id type="integer">93</id>
  <name>City</name>
  <data-type>enumerable</data-type>
  <data-option>single</data-option>
  <position type="integer">6</position>
  <flags type="array"/>
  <short-name nil="true"/>
  <values>
    <value id="8288834" client_id="">
      <enum_val>
        <name>cleveland</name>
      </enum_val>
    </value>
  </values>
</ticket-input>
<ticket-input>
  <id type="integer">91</id>
  <name>Address 1</name>
  <data-type>string</data-type>
  <data-option nil="true"/>
  <position type="integer">4</position>
  <flags type="array">
    <flag>allow_lowercase</flag>
  </flags>
  <short-name>Address 1</short-name>
  <values>
    <value id="8288832" client_id="">
      <formatted_string_val>123 rd</formatted_string_val>
    </value>
  </values>
</ticket-input>
<ticket-input>
  <id type="integer">260</id>
  <name>Location Name</name>
  <data-type>location</data-type>
  <data-option nil="true"/>
  <position type="integer">1</position>
  <flags type="array"/>
  <short-name nil="true"/>
  <values>
    <value id="8288835" client_id="">
<location>
  <id type="integer">9893</id>
  <kind>Hospital</kind>
  <name>HEALTHS</name>
  <address>123 rd</address>
  <address-2 nil="true"/>
  <city>cleveland</city>
  <state>OH</state>
  <zip>45632</zip>
  <phone></phone>
  <phone-2 nil="true"/>
  <fax nil="true"/>
  <fax-2 nil="true"/>
  <code>1701007</code>
  <location-group-id type="integer">16</location-group-id>
  <ticket-fields-count type="integer">14</ticket-fields-count>
  <disabled type="boolean">false</disabled>
  <location-fields-count type="integer">1</location-fields-count>
  <latitude>42° 22' N</latitude>
  <longitude>083°281' W</longitude>
  <location-type>Skilled Nursing Facility</location-type>
</location>
    </value>
  </values>
</ticket-input>
<ticket-input>
  <id type="integer">97</id>
  <name>State</name>
  <data-type>enumerable</data-type>
  <data-option>single</data-option>
  <position type="integer">7</position>
  <flags type="array"/>
  <short-name nil="true"/>
  <values>
    <value id="8288836" client_id="">
      <enum_val>
        <name>MI</name>
      </enum_val>
    </value>
  </values>
</ticket-input>
<ticket-input>
  <id type="integer">685</id>
  <name>Apartment, Suite, or Room</name>
  <data-type>string</data-type>
  <data-option nil="true"/>
  <position type="integer">5</position>
  <flags type="array">
    <flag>allow_lowercase</flag>
  </flags>
  <short-name>Apt/Suite</short-name>
  <values>
    <value id="8288833" client_id="">
      <formatted_string_val>12</formatted_string_val>
    </value>
  </values>
</ticket-input>
<ticket-input>
  <id type="integer">96</id>
  <name>Zip</name>
  <data-type>string</data-type>
  <data-option nil="true"/>
  <position type="integer">8</position>
  <flags type="array"/>
  <short-name nil="true"/>
  <values>
    <value id="8288837" client_id="">
      <formatted_string_val>48377</formatted_string_val>
    </value>
  </values>
</ticket-input>

在查询1上,我可以获取某些记录上的数据,但是在没有确切数量的“票证项目”的情况下,我可以按正确的顺序获取其他记录的数据。第二个查询将不会根据实际文本值进行过滤。

0 个答案:

没有答案