文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  填充空间列

13.4.7 填充空间列

创建空间列后,您可以使用空间数据填充它们。

值应以内部几何格式存储,但您可以将它们从已知文本 (WKT) 或已知二进制 (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。有几种方法可以满足此要求。例如

  • 使用十六进制文字语法插入 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()