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()怎么用?
基础教程推荐
猜你喜欢
- 表 './mysql/proc' 被标记为崩溃,应该修复 2022-01-01
- 如何根据该 XML 中的值更新 SQL 中的 XML 2021-01-01
- 什么是 orradiag_<user>文件夹? 2022-01-01
- 在 MySQL 中:如何将表名作为存储过程和/或函数参数传递? 2021-01-01
- 在多列上分布任意行 2021-01-01
- mysql选择动态行值作为列名,另一列作为值 2021-01-01
- MySQL 中的类型:BigInt(20) 与 Int(20) 2021-01-01
- 如何在 SQL 中将 Float 转换为 Varchar 2021-01-01
- oracle区分大小写的原因? 2021-01-01
- 二进制文件到 SQL 数据库 Apache Camel 2021-01-01