如何在MariaDB中对location列调用ST_GeomFromText函数
在MariaDB中对location列调用ST_GeomFromText的正确方法
解决方案
使用MariaDB的CONCAT()函数完成字符串拼接,替代PostgreSQL中的||运算符,正确语句如下:
SELECT ST_GeomFromText(CONCAT('POINT(', location, ')'), 4326) FROM test;
错误原因
MariaDB默认SQL模式下,||是**逻辑或(OR)**运算符,而非字符串连接符。你原先的语句'POINT('||location||')'会被解析为布尔表达式计算,最终传入ST_GeomFromText的是布尔值,这就导致了Illegal parameter data type boolean的错误。
关于二进制结果的处理
ST_GeomFromText返回的是WKB(Well-Known Binary)格式的二进制几何对象,若需要可读的文本格式,可搭配ST_AsText()函数转换:
SELECT ST_AsText(ST_GeomFromText(CONCAT('POINT(', location, ')'), 4326)) FROM test;
也可以直接使用专门处理点的ST_PointFromText函数,效果一致:
SELECT ST_PointFromText(CONCAT('POINT(', location, ')'), 4326) FROM test;
内容的提问来源于stack exchange,提问作者SJF
相关产品推荐
相关产品推荐

