我有一些 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>
如您所见,此特定示例标识了两个函数调用 - 但两者都针对同一个函数 (DDOutputB60)
我正在尝试编写一些 SQL 来列出 DISTINCT 函数,但需要在 XPath 中执行此操作,而不是在从结果集中选择 DISTINCT 的包装 SELECT 语句中。
(顺便说一句,这样做的原因是这是递归 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>
这将是单个节点结果,因为已删除重复项。