【问题标题】:Customize sorting in Marklogic在 Marklogic 中自定义排序
【发布时间】:2018-07-04 12:34:21
【问题描述】:

我正在寻找对来自 MarkLogic 数据库的项目进行排序的自定义。 排序双引号或单引号时,应忽略美元符号和所有其他标点符号。

下面是示例脚本:

xquery version "1.0-ml";

declare default collation "http://marklogic.com/collation/";

let $seq := ("a", "b", "1", "2", "$3", '"object"')
for $x in $seq
order by $x ascending 
return $x

【问题讨论】:

    标签: xquery marklogic


    【解决方案1】:

    通过设置默认排序规则,或在 order byhttp://marklogic.com/collation/en/S1/T00BB/AS 中指定排序规则,将满足您的大部分要求(不区分引号和标点符号)。

    但是,$ 不是一个被忽略的字符。您可以使用fn:translate() 函数删除$,以及您不想影响排序顺序的任何其他字符:

    xquery version "1.0-ml";
    
    let $seq := ("a", "b", "c", "1", "2", "$3", '"object"')
    for $x in $seq
    order by fn:translate($x, "$", "") ascending collation "http://marklogic.com/collation/en/S1/T00BB/AS"
    return $x
    

    【讨论】:

      【解决方案2】:

      您可以使用fn:replace(...) 从每个字符串中删除所有非单词字符(以及$,这似乎被认为是Word 字符,至少BaseX):

      let $seq := ("a", "b", "1", "2", "$3", '"object"')
      for $x in $seq
      order by replace($x, '[\W\$]', '') ascending
      return $x
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-02-03
        • 1970-01-01
        • 2022-12-04
        • 1970-01-01
        • 2016-05-07
        • 2015-03-10
        • 1970-01-01
        相关资源
        最近更新 更多