ST_IsEmpty() în MySQL

Returnează 1 dacă geometria este goală (colecția goală) și 0 în rest.

Sintaxă
ST_IsEmpty(geometrie)

Ce face ST_IsEmpty()

În MySQL singura geometrie goală validă este colecția goală, GEOMETRYCOLLECTION EMPTY, creată de exemplu cu GeomCollection(). Forme ca POINT EMPTY nu sunt acceptate.

Geometrii goale apar ca rezultat al operațiilor: intersecția a două poligoane care nu se ating este goală.

Parametri

Parametru Descriere
geometrie Valoarea spațială.

Ce returnează

1 sau 0 (NULL pentru NULL).

Exemple

Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.

CREATE TABLE cartiere (
  id INT PRIMARY KEY,
  nume VARCHAR(20),
  forma POLYGON NOT NULL
);

INSERT INTO cartiere VALUES
  (1, 'Centru',   ST_GeomFromText('POLYGON((0 0,4 0,4 4,0 4,0 0))')),
  (2, 'Copou',    ST_GeomFromText('POLYGON((0 4,4 4,4 8,0 8,0 4))')),
  (3, 'Tătărași', ST_GeomFromText('POLYGON((3 1,7 1,7 5,3 5,3 1))')),
  (4, 'Galata',   ST_GeomFromText('POLYGON((10 0,13 0,13 3,10 3,10 0))'));

Exemplul 1: Colecția goală și un punct

SELECT ST_IsEmpty(GeomCollection()) AS goala, ST_IsEmpty(Point(1, 1)) AS punct;

Rezultat

+-------+-------+
| goala | punct |
+-------+-------+
|     1 |     0 |
+-------+-------+

Exemplul 2: Cartiere care nu au nimic în comun

SELECT a.nume, b.nume AS cu,
       ST_IsEmpty(ST_Intersection(a.forma, b.forma)) AS fara_zona_comuna
FROM cartiere a JOIN cartiere b ON a.id = 1 AND b.id > 1
ORDER BY b.id;

Rezultat

+--------+-------------+------------------+
| nume   | cu          | fara_zona_comuna |
+--------+-------------+------------------+
| Centru | Copou       |                0 |
| Centru | Tătărași    |                0 |
| Centru | Galata      |                1 |
+--------+-------------+------------------+

Greșeli frecvente

  • Folosești ST_IsEmpty() ca să verifici NULL. Pentru o valoare lipsă rezultatul este NULL; folosește IS NULL.

Comenzi înrudite

  • GeomCollection(): Pune geometrii de orice tip (puncte, linii, poligoane) într-o colecție; fără argumente creează o geometrie goală.
  • ST_Intersection(): Returnează partea comună a două geometrii (intersecția lor).
  • IS NULL: Găsește rândurile în care o coloană nu are valoare (NULL) sau, cu IS NOT NULL, în care are.