0

さまざまな関数呼び出しを識別するタグを含むいくつかの MathML があります (ただし、このシナリオは任意の XML に適用できます)。

サンプルは次のとおりです。

<math>
  <apply>
    <ci>IIF</ci>
    <apply>
      <eq />
      <apply>
        <ci>DDOutputB60</ci>
        <ci>Index</ci>
      </apply>
      <cn>0</cn>
    </apply>
    <cn>0</cn>
    <apply>
      <ci>DDOutputB60</ci>
      <ci>Index</ci>
    </apply>
  </apply>
</math>

ご覧のとおり、この特定のサンプルでは 2 つの関数呼び出しが識別されていますが、どちらも同じ関数 (DDOutputB60) に対するものです。

DISTINCT 関数を一覧表示する SQL を記述しようとしていますが、結果セットから DISTINCT を選択するラッパー SELECT ステートメントではなく、XPath でこれを行う必要があります。

(余談ですが、この理由は、これが再帰 CTE のメンバー SQL であり、DISTINCT または GROUP BY が許可されていないためです)

以下は、個別の値を選択する有効な XPath であると思われますが、SQL Server 2008 ではサポートされていません。

COLUMN.nodes('(//ci[not(text() = preceding-sibling::ci/text())])')

SQL Server 2008 で動作する同等の XPath を提案できる人はいますか? おそらく >> または << ノード比較演算子が役立つかもしれませんが、私は専門家ではありません。まだ。

前もって感謝します。

@Ravi:望ましい出力は、この場合のように見えると思われる .nodes(...) sql 関数の結果です。

        <ci>DDOutputB60</ci>

重複が削除されているため、単一ノードの結果になります。

4

1 に答える 1