MBRCONTAINS()函数用于判断一个矩形是否包含在另一个矩形中,在空间索引中使用较多。 函数语法如下: MBRCONTAINS(g1,g2) 其中g1和g2是两个矩形,可以是点、线或面。 函数返回值为1表示g1包含g2,为0表示不包含。 下面是一个完整示例: CREATE TABLE `..
MBRCONTAINS()函数用于判断一个矩形是否包含在另一个矩形中,在空间索引中使用较多。
函数语法如下:
MBRCONTAINS(g1,g2)
其中g1和g2是两个矩形,可以是点、线或面。
函数返回值为1表示g1包含g2,为0表示不包含。
下面是一个完整示例:
CREATE TABLE `spatialTest` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`geom` geometry DEFAULT NULL,
PRIMARY KEY (`id`),
SPATIAL KEY `geom` (`geom`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
INSERT INTO `spatialTest` (`name`, `geom`) VALUES ('A', ST_GeomFromText('POINT(1 1)')), ('B', ST_GeomFromText('POINT(2 2)'));
SELECT MBRContains(Envelope(ST_Union(ST_Buffer(`geom`,1)))), `name`, `geom` FROM `spatialTest`;
在上面的示例中,我们首先创建一个名为spatialTest的空间表,包含了一个名为geom的空间字段。然后在表中插入了两个点,一个坐标为(1,1),另一个坐标为(2,2)。
在查询中,我们使用了ST_Buffer函数对空间数据进行了缓冲区分析,将点扩大为矩形。然后使用ST_Union函数将所有矩形合并,最后使用MBRContains函数判断合并后的矩形是否包含表中的每一个点。
查询结果如下:
+-------------------------------------------------+------+----------------+
| MBRContains(Envelope(ST_Union(ST_Buffer(`geom`,1)))) | name | geom |
+-------------------------------------------------+------+----------------+
| 1 | A | POINT(1 1) |
| 1 | B | POINT(2 2) |
+-------------------------------------------------+------+----------------+
可以看到,MBRContains函数返回值均为1,表示合并后的矩形包含表中的所有点。
沃梦达教程
本文标题为:mysql函数MBRCONTAINS()怎么用?
猜你喜欢
- 如何在oracle中获取字符串最右边的10个位置 2021-01-01
- MySQL(Windows10)使用 MyISAM 表进行 FULLTEXT 搜索不起作用 2022-01-01
- Oracle SQL 转置 2022-01-01
- 创建索引时,具有 mysql 数据库迁移的实体框架失败 2022-01-01
- HEROKU - 无法运行 git push heroku master 2021-01-01
- 如何将uuid存储为数字? 2021-01-01
- SQL Server 将 Varchar 转换为日期时间 2021-01-01
- MySql 错误 150 - 外键 2021-01-01
- 在 Oracle 中创建 CTE 2022-01-01
- SSMS 中的权限问题:“对象 'extended_properties'、数据库 'mssqlsystem_resource'、... 错误 229)上的 SELECT 权限被拒绝" 2022-01-01