0

テーブルから特定のポリゴンにあるポイントを選択しようとしています。
ここで、テーブル test1 にはジオメトリ タイプの data4 列があり、次のものが含まれています。

2,3  
5,6  
7,10  

次のクエリを実行しようとすると、空の行が返されます。エラーを解決するのを手伝ってください。

DECLARE @g geometry;   
SET @g = geometry::STGeomFromText('POLYGON((0 0, 4 0, 4 4, 0 4, 0 0))', 0);  
SELECT        *  
FROM            test1  
WHERE data4.STIntersects(@g) = 1;  

私も試しました:

WHERE @g.STContains(geometry::STGeomFromText(test1.data4, 0))='True'   

これもうまくいきませんでした。

4

1 に答える 1

1

質問にタグが付けられているように、本当に MySQL について話しているのであれば、まったく間違った方法を使用しています。STGeomFromText は SQL Server 関数です。

必要なことを実行する MySQL クエリは次のように単純です。

SELECT * 
FROM test1 
WHERE MBRContains(GeomFromText('Polygon((0 0,0 4,4 4,4 0,0 0))'), data4)

テスト用の SQLfiddle

おまけとして、SQL Server 用の記述方法を次に示します。

SELECT * 
FROM test1 
WHERE geometry::STGeomFromText('Polygon((0 0,0 4,4 4,4 0,0 0))',0)
          .STContains(data4) = 1

別の SQLfiddle

于 2013-03-01T18:49:10.523 に答える