さまざまな関数呼び出しを識別するタグを含むいくつかの 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>
重複が削除されているため、単一ノードの結果になります。