[英]rails math query inside where clause
我正在将ROR与SQlite3配合使用,并且尝试从位置表获取满足数学条件(包含属性的平方项)的结果。 “位置”表包含“纬度:浮点数”和“经度:浮点数”字段。 这是我的搜索代码行:
@results = Location.where('Latitude > ? AND Latitude < ? AND Elevation > ? AND Elevation < ? AND ((Latitude-?)**2 +(Longitude - ?)**2 <= (?)**2)',@latitude_Range_Start,@latitude_Range_End,@elevation_Range_Start, @elevation_Range_End,@latitude_mycity.to_f, @longitude_mycity.to_f, @rad_range.to_f)
Rails显示此错误:
SQLite3::SQLException: near "*": syntax error: SELECT "locations".* FROM "locations" WHERE (Latitude > 20.7333148 AND Latitude < 40.7333148 AND Elevation > -651.3542785644531 AND Elevation < 1348.6457214355469 AND ((Latitude-30.7333148)**2 +
(Longitude - 76.7794179)**2 <= (1111.0)**2))
如何查询where子句中的条件。 看来,对其中的术语进行平方运算是一个问题。 我怎么做?
SQLite没有**
运算符。
除非创建了用户定义的函数 ,否则必须手动计算平方:
...where('Latitude BETWEEN ? AND ? AND
Elevation BETWEEN ? AND ? AND
(Latitude - ?) * (Latitude - ?) +
(Longitude - ?) * (Longitude - ?) <= ? * ?', ...
(请注意,此公式假定地球是平坦的。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.