在我的用户架构中,我有一个位置列,它将保存用户的最新更新坐标。是否有PostgreSQL数据类型,我可以使用它来运行SQL查询进行搜索,例如:SELECT username FROM Users WHERE currentLocation="20 Miles Away From $1"
答案 0 :(得分:0)
如果您的“位置”列包含GPS坐标,那么基本上您唯一的选择是使用PostGIS扩展。使用PostGIS,您可以将您的位置存储在具有geometry
或geography
数据类型的列中,然后您可以在其上应用丰富的功能集。您的查询将变为:
SELECT username
FROM users
WHERE ST_Distance(currentlocation, $1) = 20; -- careful with units
这假设$1
与currentlocation
具有相同的数据类型。您可能必须将里程转换为公里,具体取决于您的坐标参考系统和数据类型(geography
将产生公里数,geometry
产生数据所在的任何单位。)