# ST\_CROSSES

## Syntax

```sql
ST_CROSSES(g1,g2)
```

## Description

Returns `1` if geometry *`g1`* spatially crosses geometry *`g2`*. Returns `NULL` if `g1` is a [Polygon](https://mariadb.com/docs/server/reference/sql-statements/geometry-constructors/geometry-constructors/polygon) or a [MultiPolygon](https://mariadb.com/docs/server/reference/sql-statements/geometry-constructors/geometry-constructors/multipolygon), or if `g2` is a [Point](https://mariadb.com/docs/server/reference/sql-statements/geometry-constructors/geometry-constructors/point) or a [MultiPoint](https://mariadb.com/docs/server/reference/sql-statements/geometry-constructors/geometry-constructors/multipoint). Otherwise, returns `0`.

The term spatially crosses denotes a spatial relation between two given geometries that has the following properties:

* The two geometries intersect.
* Their intersection results in a geometry that has a dimension that is one less than the maximum dimension of the two given geometries.
* Their intersection is not equal to either of the two given geometries.

`ST_CROSSES()` uses object shapes, while [CROSSES()](https://mariadb.com/docs/server/reference/sql-statements/geometry-constructors/geometry-relations/crosses), based on the original MySQL implementation, uses object bounding rectangles.

## Examples

```sql
SET @g1 = ST_GEOMFROMTEXT('LINESTRING(174 149, 176 151)');

SET @g2 = ST_GEOMFROMTEXT('POLYGON((175 150, 20 40, 50 60, 125 100, 175 150))');

SELECT ST_CROSSES(@g1,@g2);
+---------------------+
| ST_CROSSES(@g1,@g2) |
+---------------------+
|                   1 |
+---------------------+

SET @g1 = ST_GEOMFROMTEXT('LINESTRING(176 149, 176 151)');

SELECT ST_CROSSES(@g1,@g2);
+---------------------+
| ST_CROSSES(@g1,@g2) |
+---------------------+
|                   0 |
+---------------------+
```

<sub>*This page is licensed: CC BY-SA / Gnu FDL*</sub>

{% @marketo/form formId="4316" %}
