我使用的是MarkLogic Server(企业版)7.0-6.3,并希望按升序对以下数据进行排序,但我使用的排序规则没有正确完成工作。
查询:
for $result in ("A, 105.1", "A, 105.5", "A, 105.31", "A, 29")
order by $result ascending collation "http://marklogic.com/collation//AS/MO"
return $result
结果:
`A, 29
A, 105.1
A, 105.5
A, 105.31`
在这里,您可以看到第三个&结果订单的第4个位置不正确。我不确定它是否是MO的Marklogic错误。找到解决方案需要帮助。谢谢。
使用整理:
答案 0 :(得分:1)
整理指定考虑顺序'数字'作为数字,而不是小数。不管忽略变量字符。 01.102将在" 01.2"之后排序 - > " 01" ==" 01" ," 102" > " 2"
示例:
for $result in ("01.102", "01.2", "01.200", "01.20")
order by $result ascending collation "http://marklogic.com/collation//AS/MO"
return $result
正确生成
01.2
01.20
01.102
01.200
一个2'键'数字排序,
A =" 01",B =(2,20,102,200)
答案 1 :(得分:0)
这会产生所需的结果:
xquery version "1.0-ml";
for $result in ("A, 105.1", "A, 105.5", "A, 105.31", "A, 29")
order by fn:substring-before($result, " ") , xs:float(fn:substring-after($result, " ")) ascending
return $result