为Google Fusion Tables构建SQL“IN”的字符串

时间:2012-12-02 00:59:20

标签: javascript sql google-maps-api-3

我有一个充满国家/地区名称及其相应地理数据的Google Fusion桌子。我有一个网站,需要获取一系列国家/地区名称,并将它们放入SQL IN('foo', 'bar', 'baz')中,作为我为在Google地图中添加图层而设置的字符串的一部分。

以下是 工作的代码示例:

var layer = new google.maps.FusionTablesLayer({
    query: {
        select: 'geometry',
        from: '1vnD6W9q3VWvV3UFaza8I8UwSSWv5k6kemDjNYLo',
        where: 'CNTRYNAME IN(\'Tanzania\', \'Angola\')'
    },
    styles: [{
        polygonOptions: {
        fillColor: "#D77D00",
        fillOpacity: 0.4
    },
    markerOptions: {
        iconName: 'open_diamond'
    },
}],
});
layer.setMap(map);

您会注意到查询字符串需要\表示SQL需要IN值的数组。我完全坚持如何从需要进入的值数组中构造一个字符串。

这是我尝试过的:

var str = 'CNTRYNAME IN(';
for (var i = 0; i < countries.length; i++) {
    str += '\\\'' + countries[i] + '\\\'';
    }
str += ')';

在这种情况下,查询不再正常工作。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

问题不在于报价的转义,你可以在这里使用:

str += "'" + countries[i] + "'";

问题是您在查询中省略了逗号。

这应该有效:

var str = "CNTRYNAME IN('"+countries.join("','")+"')";