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()怎么用?
基础教程推荐
猜你喜欢
- SQL 效率:WHERE IN 子查询 vs. JOIN 然后 GROUP 2021-01-01
- 在 SQL 中连接多个表 2021-01-01
- SQL:使用来自具有相同列名的两个表中的数据... 2021-01-01
- 如何使用 mysql.connector 禁用查询缓存 2022-01-01
- 是否可以执行按位分组功能? 2021-01-01
- 需要 MySQL 5.1 中的抽象触发器来更新审计日志 2021-01-01
- 将 SQL Server DateTime 列迁移到 DateTimeOffset 2021-01-01
- 无法解决整理冲突 2021-01-01
- SQL Server 实例在登录协商期间返回无效或不受支持的协议版本 2021-01-01
- SSMS 中的权限问题:“对象 'extended_properties'、数据库 'mssqlsystem_resource'、... 错误 229)上的 SELECT 权限被拒绝" 2022-01-01
