- Kategorien:
ST_DISTANCE¶
Gibt den minimalen Großkreisabstand zwischen zwei Objekten vom Typ GEOGRAPHY oder den minimalen euklidischen Abstand zwischen zwei Objekten vom Typ GEOMETRY zurück.
Syntax¶
ST_DISTANCE( <geography_or_geometry_expression_1> , <geography_or_geometry_expression_2> )
Argumente¶
- geography_or_geometry_expression_1
- Das Argument muss vom Datentyp GEOGRAPHY oder GEOMETRY sein. 
- geography_or_geometry_expression_2
- Das Argument muss vom Datentyp GEOGRAPHY oder GEOMETRY sein. 
Rückgabewerte¶
Gibt einen FLOAT-Wert zurück, der die Entfernung darstellt, oder NULL:
- Bei Eingabewerten vom Typ GEOGRAPHY wird die Entfernung in Meter angegeben. 
- Bei Eingabewerten vom Typ GEOMETRY wird die Entfernung mit den Einheiten berechnet, die zur Definition der Eingabekoordinaten verwendet wurden. 
- Gibt NULL zurück, wenn ein oder mehrere Eingabepunkte NULL sind. 
Nutzungshinweise¶
- Bei GEOMETRY-Objekten meldet die Funktion einen Fehler, wenn die beiden eingegebenen GEOMETRY-Objekte unterschiedliche SRIDs haben. 
Beispiele¶
Die folgenden Beispiele verwenden die Funktion ST_DISTANCE.
GEOGRAPHY-Beispiele¶
Zeigt die Entfernung in Metern zwischen zwei Punkten 1 Grad entfernt entlang des Äquators (ungefähr 111 Kilometer).
WITH d AS
  ( ST_DISTANCE(ST_MAKEPOINT(0, 0), ST_MAKEPOINT(1, 0)) )
SELECT d / 1000 AS kilometers, d / 1609 AS miles;
+---------------+--------------+
|    KILOMETERS |        MILES |
|---------------+--------------|
| 111.195101177 | 69.108204585 |
+---------------+--------------+
Anzeigen der Ausgabe der Funktion ST_DISTANCE, wenn ein oder mehrere Eingabewerte NULL sind:
SELECT ST_DISTANCE(ST_MAKEPOINT(0, 0), ST_MAKEPOINT(NULL, NULL)) AS null_input;
+------------+
| NULL_INPUT |
|------------|
|       NULL |
+------------+
GEOMETRY-Beispiele¶
Im folgenden Beispiel wird die für die Eingabeobjekte vom Typ GEOGRAPHY und GEOMETRY berechnete Entfernung verglichen.
SELECT ST_DISTANCE(TO_GEOMETRY('POINT(0 0)'), TO_GEOMETRY('POINT(1 1)')) AS geometry_distance,
  ST_DISTANCE(TO_GEOGRAPHY('POINT(0 0)'), TO_GEOGRAPHY('POINT(1 1)')) AS geography_distance;
+-------------------+--------------------+
| GEOMETRY_DISTANCE | GEOGRAPHY_DISTANCE |
|-------------------+--------------------|
|       1.414213562 |   157249.628092508 |
+-------------------+--------------------+
Weitere Beispiele finden Sie unter Beispiele zum Vergleich der Datentypen GEOGRAPHY und GEOMETRY.