STSymDifference (geometry Data Type)

Applies to: SQL Server Azure SQL Database Azure SQL Managed Instance SQL analytics endpoint in Microsoft Fabric Warehouse in Microsoft Fabric

Returns an object that represents all points that are either in one geometry instance or another geometry instance, but not those points that lie in both instances.

Syntax

  
.STSymDifference ( other_geometry )  

Note

To view Transact-SQL syntax for SQL Server 2014 (12.x) and earlier versions, see Previous versions documentation.

Arguments

other_geometry
Is another geometry instance in addition to the instance on which STSymDifference() is being invoked.

Return Types

SQL Server return type: geometry

CLR return type: SqlGeometry

Remarks

This method always returns null if the spatial reference IDs (SRIDs) of the geometry instances do not match. The result may contain circular arc segments only if the input instances contain circular arc segments.

Examples

A. Computing the symmetric difference of two Polygon instances

The following example uses STSymDifference() to compute the symmetric difference of two Polygon instances.

DECLARE @g geometry;  
DECLARE @h geometry;  
SET @g = geometry::STGeomFromText('POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))', 0);  
SET @h = geometry::STGeomFromText('POLYGON((1 1, 3 1, 3 3, 1 3, 1 1))', 0);  
SELECT @g.STSymDifference(@h).ToString();  

B. Computing the symmetric difference between a CurvePolygon and a Polygon instance

The following example returns a GeometryCollection that represents the symmetric difference between a CurvePolygon and a Polygon.

 DECLARE @g geometry = 'CURVEPOLYGON (CIRCULARSTRING (0 -4, 4 0, 0 4, -4 0, 0 -4))';  
 DECLARE @h geometry = 'POLYGON ((1 -1, 5 -1, 5 3, 1 3, 1 -1))';  
 SELECT @h.STSymDifference(@g).ToString();

C. Using STSymDifference() on CurvePolygon instance with an inscribed Polygon instance

The following example returns a CurvePolygon instance with an interior Polygon ring that represents the symmetric difference between the two instances compared.

 DECLARE @g geometry = 'CURVEPOLYGON (CIRCULARSTRING (0 -4, 4 0, 0 4, -4 0, 0 -4))';  
 DECLARE @h geometry = 'POLYGON ((1 -1, 2 -1, 2 1, 1 1, 1 -1))';  
 SELECT @h.STSymDifference(@g).ToString();

See Also

OGC Methods on Geometry Instances