SQL查询错误#1064

时间:2013-01-23 22:15:06

标签: mysql sql

所以我有这个问题:

SELECT 
   t1.password 
FROM Session AS t1 
INNER JOIN Locations AS t2 ON 
    t2.id = t1.location_id AND 
    SQRT( POWER( CONVERT(t2.longitude,float(10)) - 132.456, 2) + 
        POWER( CONVERT(t2.latitude,float(10)) - 132.456, 2) ) < 100 
WHERE t1.end_distribution = 0 AND t1.end_session = 0

我得到了这个:

  

1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在'float(10)附近使用正确的语法 - 132.456,2)+ POWER(CONVERT(t2.latitude,float(10)) - 132.456,2(2))'at第13行

2 个答案:

答案 0 :(得分:3)

使用

CONVERT(t2.longitude, float(10))

MySQL CONVERT SYNTAX

<强>更新

根据上面的文档,您无法将表达式转换为float类型,而是使用decimal。

CONVERT(t2.longitude, decimal(10))

答案 1 :(得分:0)

您对CONVERT函数的类型有一个无效的规范。 FLOAT(10)无效。看起来您最好的选择是使用DECIMAL

从MySQL参考手册:http://dev.mysql.com/doc/refman/5.5/en/cast-functions.html

&LT;剪断&GT;

结果的类型可以是以下值之一:

BINARY[(N)]
CHAR[(N)]
DATE
DATETIME
DECIMAL[(M[,D])]
SIGNED [INTEGER]
TIME
UNSIGNED [INTEGER]

&LT; /剪断&GT;