首页 > 解决方案 > 如何在 mySQL 表中插入点

问题描述

我收到一条 mySQL 错误,提示“ADDRESS_LONGI_LATIT_LOCATION”不能为空。'geomfromtext/pointfromtext' 可能返回 null。这里有什么问题?任何帮助表示赞赏。

INSERT INTO address (ADDRESS_NICKNAME,ADDRESS_LONGI_LATIT_LOCATION) 
VALUES ('Testing',geomfromtext('Point(10.20.45 34.23.79)'))

另一种方式

INSERT INTO address (ADDRESS_NICKNAME,ADDRESS_LONGI_LATIT_LOCATION) 
VALUES ('Testing',pointfromtext('10.20.45 34.23.79'))

标签: mysqlgeometrypointmysql-spatial

解决方案


根据(是不推荐使用的同义词的规范ST_geomFromText()geomfromtext(),您不应使用它):

如果几何参数是NULL或不是语法格式正确的几何,或者如果 SRID 参数是NULL,则返回值为NULL

实际上,您的论点在语法上不是格式正确的,因为每个坐标都包含两个点。你可以用一个简单的方法来检查:

select geomfromtext('Point(10.20.45 34.23.79)')

结果(在线尝试):

(无效的)

只需一个点,它就可以工作:

select geomfromtext('Point(10.2045 34.2379)')

结果(真实在线

AAAAAAEBAAAAYhBYObRoJED129eBcx5BQA==

这同样适用于ST_PointFromText((),除了您仍然需要使用WKT 格式,因此您还需要使用POINT()

select pointfromtext('point(10.2045 34.2379)')

结果(在线尝试):

AAAAAAEBAAAAYhBYObRoJED129eBcx5BQA==

基本上这两个函数是相同的,除了pointfromtext()强制一个点结果。


推荐阅读