文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  填充空間資料欄位

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()