ST_NUMGEOMETRIES
描述
返回几何对象中包含的子几何数量。对于非集合类型(Point、LineString、Polygon、Circle),始终返回 1。对于集合类型(MultiPolygon),返回集合中的子几何数量。
备注
Since 4.1.2
语法
ST_NUMGEOMETRIES( <shape> )
参数
| 参数 | 描述 |
|---|---|
<shape> | 输入几何,类型为 GEOMETRY 或 VARCHAR(WKT 格式),且可转换为 GEOMETRY。 |
返回值
返回一个 BIGINT 值,表示几何对象中的子几何数量。
ST_NUMGEOMETRIES 具有如下边界情况:
- 如果输入参数为
NULL,返回NULL。 - 如果输入参数无法解析为有效几何对象,返回
NULL。 - 对于非集合类型(
POINT、LINESTRING、POLYGON、CIRCLE),始终返回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 |
+--------------------------------------------------+