ST_SymDifference — Returns a geometry that represents the portions of A and B that do not intersect. It is called a symmetric difference because ST_SymDifference(A,B) = ST_SymDifference(B,A).
geometry ST_SymDifference(geometry  geomA, geometry  geomB);
Returns a geometry that represents the portions of A and B that do not intersect. It is called a symmetric difference because ST_SymDifference(A,B) = ST_SymDifference(B,A). One can think of this as ST_Union(geomA,geomB) - ST_Intersection(A,B).
Performed by the GEOS module
| ![[Note]](images/note.png) | |
| Do not call with a GeometryCollection as an argument | 
 This method implements the OpenGIS Simple Features
 Implementation Specification for SQL 1.1. s2.1.1.3
 This method implements the OpenGIS Simple Features
 Implementation Specification for SQL 1.1. s2.1.1.3
 This method implements the SQL/MM specification. SQL-MM 3: 5.1.21
 This method implements the SQL/MM specification. SQL-MM 3: 5.1.21
 This function supports 3d and will not drop the z-index. However it seems to only consider x y when 
		  doing the difference and tacks back on the Z-Index
 This function supports 3d and will not drop the z-index. However it seems to only consider x y when 
		  doing the difference and tacks back on the Z-Index
| 
  The original linestrings shown together 
 |  The symmetric difference of the two linestrings 
 | 
--Safe for 2d - symmetric difference of 2 linestrings
SELECT ST_AsText(
	ST_SymDifference(
		ST_GeomFromText('LINESTRING(50 100, 50 200)'),
		ST_GeomFromText('LINESTRING(50 50, 50 150)')
	)
);
st_astext
---------
MULTILINESTRING((50 150,50 200),(50 50,50 100))
--When used in 3d doesn't quite do the right thing
SELECT ST_AsEWKT(ST_SymDifference(ST_GeomFromEWKT('LINESTRING(1 2 1, 1 4 2)'),
	ST_GeomFromEWKT('LINESTRING(1 1 3, 1 3 4)')))
st_astext
------------
MULTILINESTRING((1 3 2.75,1 4 2),(1 1 3,1 2 2.25))