尝试获取与以下 XML 不同的连续内容。
<x>
AB
</x>
<x>
AB
</x>
<x>
AB
</x>
<x>
AC
</x>
<x>
AB
</x>
预期结果:
AB AC AB
当前结果:
AB AC
代码:
SELECT * ,STUFF(( TheParts.query(' for $x in distinct-values(/x/text()) return <x>{concat(" | ", $x)}</x> ').value('.', 'varchar(max)') ), 1, 1, '') AS Hierarchy
FROM Table
不同值与整个集合不同,但我只想在连续的情况下获得不同值。
最佳答案
我们有一个纯 XQuery 解决方案。
SQL
SELECT REPLACE(CAST('<x>AB</x>
<x>AB</x>
<x>AB</x>
<x>AC</x>
<x>AB</x>' as xml)
.query('
for $v in x
let $n := x[. >> $v][1]
return if ($v/text()[1] = $n/text()[1]) then ()
else data($v)
').value('.', 'VARCHAR(MAX)'), SPACE(1), ' | ') AS Result;
输出
+--------------+
| Result |
+--------------+
| AB | AC | AB |
+--------------+
关于sql - Xquery 获取连续的不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70252942/