我从 FusionTable API 得到奇怪的结果。具体来说,它似乎无法处理对数值具有相等约束的简单选择语句。我尝试以下形式的任何查询:
从 1Nynh5pPrj1q8JqbalppAm-qzAsgKvL0ZRala7VI 中选择 COUNT(),其中 AGE=41
产生零记录:
{
"kind": "fusiontables#sqlresponse",
"columns": [
"count()"
],
"rows": [
[ "0" ]
]
}
相比之下,范围约束可以正常工作:
从 1Nynh5pPrj1q8JqbalppAm-qzAsgKvL0ZRala7VI 中选择 COUNT(),其中 AGE>40.99 AND AGE<41.01
{
"kind": "fusiontables#sqlresponse",
"columns": [
"count()"
],
"rows": [
[ "362" ]
]
}
也许下面的数字不是整数? 从 1Nynh5pPrj1q8JqbalppAm-qzAsgKvL0ZRala7VI 中选择 AGE>40.99 AND AGE<41.01返回
{
"kind": "fusiontables#sqlresponse",
"columns": [
"AGE"
],
"rows": [
[ "41" ],
[ "41" ],
[ "41" ],
...359 more...
]}
现在,也许有一些浮点表示错误正在发生?我认为小整数可以精确地表示为浮点数(即使某些小数,例如 0.1,在二进制中重复小数)。
Fusion Table SQL 中的错误似乎不太可能在不被其他人发现的情况下通过,所以也许这个特定的 FusionTable的加载方式有一些独特之处?
更新:
虽然使用上面的新 Fusion Table API 查询似乎失败,但使用旧的 Fusion Table SQL API(最近已弃用)成功: www.google.com/fusiontables/api/query ?sql=SELECT%20COUNT()%20FROM% 204579147%20WHERE%20AGE%20LIKE%2041
返回此 JSON 响应:
count()
362
此外,新的 FusionTable API 似乎被数值混淆了:
SELECT COUNT() FROM 4579147 WHERE AGE = 41产量0(不正确)SELECT COUNT() FROM 4579147 WHERE AGE = "41"产量0(不正确)SELECT COUNT() FROM 4579147 WHERE AGE MATCHES 41产量362SELECT COUNT() FROM 4579147 WHERE AGE LIKE 41产量362SELECT COUNT() FROM 4579147 WHERE AGE LIKE "41"产量362SELECT COUNT() FROM 4579147 WHERE AGE LIKE "%41%"产量362