You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中查询仅含单个p*节点的ltree类型数据

PostgreSQL查询ltree字段中仅含一个p*节点的记录

可以通过正则匹配统计p开头节点的数量来实现需求,以下是查询语句:

SELECT *
FROM structure
WHERE regexp_count(text(path), '^p|\.p') = 1;

原理说明

  • 将ltree类型的path转换为文本格式(text(path)),便于使用正则进行节点匹配
  • 正则表达式^p|\.p精准匹配所有以p开头的节点:
    • ^p匹配位于路径开头的p节点(如p123.f456这类情况)
    • \.p匹配位于路径中间或末尾的p节点(节点前有分隔符.)
  • regexp_count函数统计匹配到的p节点总数,当总数等于1时,筛选出符合要求的记录

验证示例

针对你提供的测试数据:

f55219.f55468.f55635.f44939.p10900.f45675.p10902
f55219.f55468.f43355.f55340.p12120
f55219.f55468.f55635.f44939.p11153.f46590.p11222
f55219.f55468.f43355.f48299.p11620

执行上述查询后,会返回第2、4行符合条件的记录。

内容的提问来源于stack exchange,提问作者JoAnywhere

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 22:38:12