Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Populating Spatial Columns

13.4.7 填充空间列

创建了空间列后,您可以将其填充为空间数据。

值应该以内部几何格式存储,但您可以将其从Well-Known Text(WKT)或Well-Known Binary(WKB)格式转换。以下示例演示了如何将WKT值转换为内部几何格式,并将其插入到表中:

  • INSERT语句中直接进行转换:

    INSERT INTO geom VALUES (ST_GeomFromText('POINT(1 1)'));
    
    SET @g = 'POINT(1 1)';
    INSERT INTO geom VALUES (ST_GeomFromText(@g));
  • INSERT之前进行转换:

    SET @g = ST_GeomFromText('POINT(1 1)');
    INSERT INTO geom VALUES (@g);

以下示例插入了更复杂的几何形状到表中:

SET @g = 'LINESTRING(0 0,1 1,2 2)';
INSERT INTO geom VALUES (ST_GeomFromText(@g));

SET @g = 'POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))';
INSERT INTO geom VALUES (ST_GeomFromText(@g));

SET @g =
'GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(0 0,1 1,2 2,3 3,4 4))';
INSERT INTO geom VALUES (ST_GeomFromText(@g));

前面的示例使用ST_GeomFromText()创建几何值。您也可以使用类型特定的函数:

SET @g = 'POINT(1 1)';
INSERT INTO geom VALUES (ST_PointFromText(@g));

SET @g = 'LINESTRING(0 0,1 1,2 2)';
INSERT INTO geom VALUES (ST_LineStringFromText(@g));

SET @g = 'POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))';
INSERT INTO geom VALUES (ST_PolygonFromText(@g));

SET @g =
'GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(0 0,1 1,2 2,3 3,4 4))';
INSERT INTO geom VALUES (ST_GeomCollFromText(@g));

客户端应用程序想要使用WKB表示几何值的客户端应用程序负责将正确的WKB发送到服务器。有多种方式可以满足这个要求。例如:

  • 使用hex字面语法插入一个POINT(1 1)值:

    INSERT INTO geom VALUES
    (ST_GeomFromWKB(X'0101000000000000000000F03F000000000000F03F'));
  • ODBC应用程序可以发送WKB表示,使用BLOB类型的占位符绑定:

    INSERT INTO geom VALUES (ST_GeomFromWKB(?))

    其他编程接口可能支持类似的占位符机制。

  • 在C程序中,您可以使用mysql_real_escape_string_quote()转义二进制值,并将结果包含在查询字符串中发送到服务器。请参阅mysql_real_escape_string_quote()