ST_Difference — Computes a geometry representing the part of geometry A that does not intersect geometry B.
geometry ST_Difference(
geometry geomA, geometry geomB, float8 gridSize = 1)
;
Returns a geometry representing the part of geometry A
that does not intersect geometry B.
This is equivalent to A  ST_Intersection(A,B)
.
If A is completely contained in B
then an empty atomic geometry of appropriate type is returned.
This is the only overlay function where input order matters. ST_Difference(A, B) always returns a portion of A. 
If the optional gridSize
argument is provided, the inputs are
snapped to a grid of the given size, and the result vertices are computed
on that same grid. (Requires GEOS3.9.0 or higher)
Performed by the GEOS module
Enhanced: 3.1.0 accept a gridSize parameter  requires GEOS >= 3.9.0
This method implements the OGC Simple Features Implementation Specification for SQL 1.1. s2.1.1.3
This method implements the SQL/MM specification. SQLMM 3: 5.1.20
This function supports 3d and will not drop the zindex. However, the result is computed using XY only. The result Z values are copied, averaged or interpolated.


The difference of 2D linestrings.
SELECT ST_AsText( ST_Difference( 'LINESTRING(50 100, 50 200)'::geometry, 'LINESTRING(50 50, 50 150)'::geometry ) ); st_astext  LINESTRING(50 150,50 200)
The difference of 3D points.
SELECT ST_AsEWKT( ST_Difference( 'MULTIPOINT(118.58 38.38 5,118.60 38.329 6,118.614 38.281 7)' :: geometry, 'POINT(118.614 38.281 5)' :: geometry ) ); st_asewkt  MULTIPOINT(118.6 38.329 6,118.58 38.38 5)