首页 / 浏览问题 / 云GIS / 问题详情
iserver8C查询条件带OR
7EXP 2018年01月26日
getFeaturesBySQLParameters = new SuperMap.REST.GetFeaturesBySQLParameters({
    returnContent: true,
    datasetNames: [dataSourceName + ":" + datasetName],
    fromIndex: 0,
    toIndex: -1,
    queryParameter: new SuperMap.REST.FilterParameter({
        attributeFilter: "RESGUID='" + currentTreeNode.id + "' or BELONG='" + currentTreeNode.id + "'";
    }),
});

getFeaturesBySQLService = new SuperMap.REST.GetFeaturesBySQLService(queryUrl, {
    eventListeners: {
        "processCompleted": successCb,
        "processFailed": errorCb
    },isInTheSameDomain:true,method:"POST"
});
getFeaturesBySQLService.processAsync(getFeaturesBySQLParameters);

使用sql 查询,其中GetFeaturesBySQLParameters中设置了查询条件,

attributeFilter: "RESGUID='" + currentTreeNode.id + "' or BELONG='" + currentTreeNode.id + "'";

而currentTreeNode.id 的值为514b28b301a345c8bc01785fb17e5d33,字符串类型。

查询结果是查询不出值,而该语句直接执行sql是可以查询出值的,

若单独执行BELONG='" + currentTreeNode.id + "'"一个条件也是可以查询出结果的。

请问为何多条件查询无法查询出结果,是“OR”的原因吗?

浏览器后台出现错误:

Failed to load resource: net::ERR_EMPTY_RESPONSE

http://112.53.80.136:38099/iserver/services/data-cmdiZYS/rest/data/featureResults.json?returnContent=true

1个回答

您好,多条件查询是可以的,例如attributeFilter: "Pop_1994>1000000000 and SmArea>900"

4,524EXP 2018年01月26日
你试试带OR的查询,然后试试字符串类的查询。

{'datasetNames':["cmdiZYS:P_INTEGRATED_AREA"],'getFeatureMode':"SQL",'queryParameter':{'attributeFilter':"RESGUID:'514b28b301a345c8bc01785fb17e5d33' or BELONG='514b28b301a345c8bc01785fb17e5d33'",'name':null,'joinItems':null,'linkItems':null,'ids':null,'orderBy':null,'groupBy':null,'fields':null}}

这里,将查询条件翻译成一个了,RESGUID,后面的都成查询RESGUID的条件了,总之,这么查总是查不出值

attributeFilter: "Pop_1994>1000000000 or SmArea>900"一样可以得到查询结果

...