您可以使用以下解决方案:
SELECT *
FROM `tribemap-db`.`community`
WHERE ST_Contains(ST_GeomFromText('Polygon((35.21282317828298 31.821252014924383, 35.21282317828298 32.08220723021857, 34.6002788228068 32.08220723021857, 34.6002788228068 31.821252014924383, 35.21282317828298 31.821252014924383))'), `community`.`coordinates`);
demo on dbfiddle.uk
我更改了以下内容来解决这个问题:
您可以使用 MySQL Workbench 检查多边形。有一个空间视图和表单编辑器来查看定义的结果。
您当前对矩形的定义(附加的第一个点也是最后一个点):
矩形的定义改变(改变了点的顺序,也将第一个点添加为最后一个点):
是否有任何函数可以让我从 MySQL 中获得一个具有较少角(例如,两个相对角)的边界矩形?
您可以使用ST_MakeEnvelope 创建具有两个相对点的矩形:
SELECT *
FROM `tribemap-db`.`community`
WHERE ST_CONTAINS(ST_MakeEnvelope(ST_GeomFromText('Point(35.21282317828298 31.821252014924383)'), ST_GeomFromText('Point(34.6002788228068 32.08220723021857)')), `community`.`coordinates`);
-- or using syntax (without ST_GeomFromText) possible on MySQL 8.0+
SELECT *
FROM `tribemap-db`.`community`
WHERE ST_Contains(ST_MakeEnvelope(Point(35.21282317828298, 31.821252014924383), Point(34.6002788228068, 32.08220723021857)), `community`.`coordinates`);