跳到主要内容

ST_NUMGEOMETRIES

描述

返回几何对象中包含的子几何数量。对于非集合类型(Point、LineString、Polygon、Circle),始终返回 1。对于集合类型(MultiPolygon),返回集合中的子几何数量。

语法

ST_NUMGEOMETRIES( <shape> )

参数

参数描述
<shape>输入几何,类型为 GEOMETRY 或 VARCHAR(WKT 格式),且可转换为 GEOMETRY。

返回值

返回一个 BIGINT 值,表示几何对象中的子几何数量。

ST_NUMGEOMETRIES 具有如下边界情况:

  • 如果输入参数为 NULL,返回 NULL
  • 如果输入参数无法解析为有效几何对象,返回 NULL
  • 对于非集合类型(POINTLINESTRINGPOLYGONCIRCLE),始终返回 1
  • 对于 MULTIPOLYGON,返回集合中的多边形数量。

示例

Point 中的几何数量

SELECT ST_NUMGEOMETRIES(ST_Point(1, 2));
+----------------------------------+
| ST_NUMGEOMETRIES(ST_Point(1, 2)) |
+----------------------------------+
| 1 |
+----------------------------------+

Polygon 中的几何数量

SELECT ST_NUMGEOMETRIES(ST_GeometryFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))'));
+------------------------------------------------------------------------------+
| ST_NUMGEOMETRIES(ST_GeometryFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')) |
+------------------------------------------------------------------------------+
| 1 |
+------------------------------------------------------------------------------+

包含两个多边形的 MultiPolygon 中的几何数量

SELECT ST_NUMGEOMETRIES(ST_GeometryFromText('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)),((2 2, 3 2, 3 3, 2 3, 2 2)))'));
+------------------------------------------------------------------------------------------------------------------+
| ST_NUMGEOMETRIES(ST_GeometryFromText('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)),((2 2, 3 2, 3 3, 2 3, 2 2)))')) |
+------------------------------------------------------------------------------------------------------------------+
| 2 |
+------------------------------------------------------------------------------------------------------------------+

Circle 中的几何数量

SELECT ST_NUMGEOMETRIES(ST_Circle(0, 0, 100));
+----------------------------------------+
| ST_NUMGEOMETRIES(ST_Circle(0, 0, 100)) |
+----------------------------------------+
| 1 |
+----------------------------------------+

NULL 参数

SELECT ST_NUMGEOMETRIES(NULL);
+------------------------+
| ST_NUMGEOMETRIES(NULL) |
+------------------------+
| NULL |
+------------------------+

非法参数(返回 NULL)

SELECT ST_NUMGEOMETRIES(ST_GeometryFromText('INVALID'));
+--------------------------------------------------+
| ST_NUMGEOMETRIES(ST_GeometryFromText('INVALID')) |
+--------------------------------------------------+
| NULL |
+--------------------------------------------------+