SQL查询奇怪的错误
当我执行此查询时,显示以下错误。SQL查询奇怪的错误
[消息8114,级别16,状态5,行1
误差变换数据类型为varchar浮动。]
我想知道该错误是在比较部分即fb_userevents.userid = '100002917025417'
当这个单个的“长”字符串被替换为1或0。而不是引用(')它为什么试图转换为浮动?
我使用SQL Server 2005
select
fb_event.eventname
from
fb_event
inner join
fb_userevents on fb_userevents.eventid = fb_event.eventid
where
fb_userevents.userid = '100002917025417'
and DATEDIFF(hh,fb_event.startdate,getdate()) < 0
and acos(sin(0) * sin(convert(float,altitude)) +
cos(0) * cos(convert(float,altitude)) *
cos(convert(float,longitude) - 101)) * 6371 <= 1000
的altitutes和用户的longitutes:
您确定问题不在于此线吗?
cos(convert(float,altitude))
什么样的数据类型是海拔?并且该列中的每个值是否只包含数字字符?
是的所有数字字符也很少在负数 –
@XXXcoder - 这就是你的想法!当然,你不能保证这是因为你使用了错误的数据类型。尝试'选择转换(浮点数,高度),转换(浮点数,经度)from your_table' –
@XXXcoder - 我强烈赞同Martin的观点,如果'altitude'或'longitude'是VARCHAR字段,则至少有一个字符串值无法转换为FLOAT值。 – MatBailie
您可能需要做一个明确的转换或转换该字段。
好建议/我也会试试这个。 –
其varchar,当然 –
哦当然。我忘记了ID字段应该是字符串。而且还有我使用整数...... –
错误将来自“海拔高度”或“经度”中的无效值。 –