按升序的Marklogic顺序返回错误的排序顺序

时间:2018-06-09 01:14:10

标签: xquery marklogic

我使用的是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错误。找到解决方案需要帮助。谢谢。

使用整理:

  • MO(指定数字排序。)
  • AS(变量字符被移位(忽略)) 到变量顶部设置。)

2 个答案:

答案 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