gpt4 book ai didi

postgresql - 在 Postgres 中使用路径子集进行查询

转载 作者:行者123 更新时间:2023-11-29 11:49:25 25 4
gpt4 key购买 nike

给定这张表:

 id |            points (path)                 |
----+------------------------------------------+
1 | ((1,2),(3,4),(5,6),(7,8)) |

是否可以使用单个几何运算符和路径参数(包含路径的顺序子集)实现以下目标,如((3,4),(5,6 ))?

select * from things where points @> '(3,4)' 和点 @> '(5,6)';

最佳答案

也许只是将其转换为字符串并使用 LIKE 进行匹配(您需要 double 因为路径已关闭):

select points::text  from things 
where (points::text || points::text) like '%(3,4),(5,6)%';

如果你有很多东西值得为路径建立索引,这将在 like 查询中使用(你需要 trgm extension )

CREATE EXTENSION IF NOT EXISTS pg_trgm;
CREATE INDEX thing_text_paths ON things USING gin ( (points::text || points::text) gin_trgm_ops);

运行可以看到

SET enable_seqscan = OFF;
EXPLAIN select points::text from things
where (points::text || points::text) like '%(3,4),(5,6)%';

参见 http://sqlfiddle.com/#!17/bd760/2/0

关于postgresql - 在 Postgres 中使用路径子集进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44931852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com