我从 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
产量362
SELECT COUNT() FROM 4579147 WHERE AGE LIKE 41
产量362
SELECT COUNT() FROM 4579147 WHERE AGE LIKE "41"
产量362
SELECT COUNT() FROM 4579147 WHERE AGE LIKE "%41%"
产量362