MBRDISJOINT()函数用于判断两个MySQL空间对象是否相离(没有交点)。它的语法如下: MBRDISJOINT(g1, g2) 其中,g1和g2表示两个MySQL空间对象,可以是点、线、面等不同维度的几何对象。 函数返回值为0表示g1和g2相交,返回值为1表示g1和g2相离。 示例:
MBRDISJOINT()函数用于判断两个MySQL空间对象是否相离(没有交点)。它的语法如下:
MBRDISJOINT(g1, g2)
其中,g1和g2表示两个MySQL空间对象,可以是点、线、面等不同维度的几何对象。
函数返回值为0表示g1和g2相交,返回值为1表示g1和g2相离。
示例:
假设有一个表格test,其中有id和geom两个字段,其中geom字段存储了一组多边形数据。现在我们要判断geom字段中的每个多边形是否和另一个多边形相离。可以使用如下SQL语句:
sql
SELECT
a.id, b.id, MBRDISJOINT(a.geom, b.geom) AS disjoint
FROM
test a, test b
WHERE
a.id <> b.id
在这个查询中,我们使用了两个表格自连接,然后在WHERE语句中排除了同一行数据的比较。最后使用MBRDISJOINT()函数计算geom字段中的每个多边形和其他多边形是否相离。
完整代码如下:
sql
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`geom` geometry NOT NULL,
PRIMARY KEY (`id`),
SPATIAL KEY `geom_idx` (`geom`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO `test` (`id`, `geom`) VALUES
(1, ST_GeomFromText('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))')),
(2, ST_GeomFromText('POLYGON((2 2, 2 3, 3 3, 3 2, 2 2))')),
(3, ST_GeomFromText('POLYGON((1 1, 2 2, 2 1, 1 1))')),
(4, ST_GeomFromText('POLYGON((3 3, 4 3, 4 4, 3 4, 3 3))'));
SELECT
a.id, b.id, MBRDISJOINT(a.geom, b.geom) AS disjoint
FROM
test a, test b
WHERE
a.id <> b.id
执行结果如下:
+----+----+----------+
| id | id | disjoint |
+----+----+----------+
| 1 | 2 | 1 |
| 1 | 3 | 0 |
| 1 | 4 | 1 |
| 2 | 1 | 1 |
| 2 | 3 | 1 |
| 2 | 4 | 1 |
| 3 | 1 | 0 |
| 3 | 2 | 1 |
| 3 | 4 | 1 |
| 4 | 1 | 1 |
| 4 | 2 | 1 |
| 4 | 3 | 1 |
+----+----+----------+
沃梦达教程
本文标题为:mysql函数MBRDISJOINT()怎么用?
基础教程推荐
猜你喜欢
- 替换存储在 SQL Server 数据库列中的 XML 中的节点名 2021-01-01
- Sql*plus 总是返回退出代码 0? 2021-01-01
- (+) 在 Oracle SQL 中有什么作用? 2021-01-01
- 哪个是 Rails 应用程序的最佳数据库? 2022-01-01
- 为 SQL Server 设置 Maven 依赖项 2021-01-01
- SSIS:在数据流中使用 System::TaskName 2021-01-01
- 如何将参数传递给使用 sqlcmd 调用的 SQL Server 脚本? 2021-01-01
- 如何在没有密码提示的情况下执行 mysqldump? 2021-01-01
- my.cnf 文件在 macOS 上的位置 2021-01-01
- 与不使用派生表的查询相比,使用派生表的查询 2021-01-01