文件结构更改时,如何在SQL中解析XML?

时间:2019-04-15 07:54:54

标签: sql sql-server xml tsql xpath

我在列中具有以下XML结构(仅是其中的一小部分):

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<form>
  <div class="row" id="phrase">
    <input id="field" class="input-field col s3" type="text" placeholder="Add Training Phrase" class="validate">
  </div>
  <button class="btn waves-effect waves-light" type="button" name="action" id="add">
     Add
   </button>
</form>

我想做的是解析“结果”的结果,但是对我来说,问题是对于每个不同的xml文件,“结果”的位置都可以更改。 到目前为止,我一直在尝试的是

<block name="decision">
  <subdictionary name="main">
    <v id="Profit">126.45</v>
    <v id="Check">-99999.00</v>
    <v id="RulePath">PD159</v>
    <v id="ID">3256423</v>
    <v id="Outcome">RejectFinal</v>
    <v id="RP">,PD159</v>
  </subdictionary>
</block>

但是会出现以下错误:

  

XQuery [Table_Request.XmlResponse.value()]:“ value()”需要一个   单例(或空序列),找到类型的操作数   'xdt:untypedAtomic *'

所需的结果将是这样的:

SELECT
    a.XmlResponse.value('(/decisiondocument/block[3]/subdictionary[1]/v)[@Outcome]', 'nvarchar(20)') 'Outcome'
FROM table

1 个答案:

答案 0 :(得分:2)

使用此xpath。它将匹配所有v属性与“结果”匹配的id元素:

SELECT
    a.XmlResponse.value('(//v[@id="Outcome"])[1]', 'varchar(100)')
FROM t