ORIENTDB 在 sql 查询中自定义 Order By

ORIENTDB customize Order By in sql query

好吧,我在字符串中得到了这种格式的索引,例如 10.9.8.1。

我想用 SQL 查询对记录进行排序,按左边最重要的整数排序。

喜欢:

1

1.3

1.3.1

1.3.4

1.3.5

7.8

10.4.5

10.5

11.3

如何实现?

您可以像这样使用带有参数 "yourProperty" 的 javascript 函数:

var g=orient.getGraph();
var result=[];
var list=[];
var b=g.command("sql","select from v");
for(i=0;i<b.length;i++){
        var record=b[i];
        var index=record.getProperty(yourProperty);
        index+="."+record.getId().toString();
        var vector=index.split('.');
        list.push(vector);
}

list.sort(function (a, b) {
    var dim1=a.length-1;
    var dim2=b.length-1;
    for(j=0;j<dim1;j++){  
        var value1=parseInt(a[j]);
        if(j<dim2){   
            var value2=parseInt(b[j]);
            if(value1>value2)
                return 1;
            else if (value1<value2)
                return -1;
        }
    }
    if(dim1>dim2)
        return 1;
    else
        return -1;
});

for(m=0;m<list.length;m++){ 
  var element=list[m];
  var id=element[element.length-1];
  for(h=0;h<b.length;h++){
    var id2=b[h].getId().toString();
        if(id==id2){
            result.push(b[h]);
            break;
        }
    }
}

return result;

希望对您有所帮助。