【发布时间】:2018-11-30 02:53:24
【问题描述】:
如何返回一个字符串序列?
【问题讨论】:
标签: xquery
如何返回一个字符串序列?
【问题讨论】:
标签: xquery
XQuery 自 2014 年起支持您可以使用的 group by 子句:
for $dept at $pos in //building[year = '1900']/department
group by $key := $dept
order by $pos[1]
return ($key || ' ' || count($dept))
https://xqueryfiddle.liberty-development.net/gWcDMen
如果您没有 XQuery 3 支持,您可以使用
let $dept := //building[year = '1900']/department
for $dist-dept in distinct-values($dept)
return
concat($dist-dept, ' ', count($dept[. = $dist-dept]))
【讨论】:
group by 分组的方法。如果您真的坚持使用 XQuery 1,那么表达式 $dept 会选择 $dept[. = expression] 这样的谓词中的 department 元素序列,将 $dept 序列中每个元素的值与表达式中的值进行比较,在我建议的方法中,使用的表达式是前面用distinct-values 计算的结果,也就是说,它是一系列不同的部门名称字符串。
$a 中的至少一项等于 $b 中的至少一项,那么在 XPath 和 XQuery 中任何比较 $a = $b 为真,因此对于 for $dist-dept in distinct-values($dept) return count($dept[. = $dist-dept]),结果是一个序列每个不同部门值的部门计数的整数。