postgresql ltree类型

最近一个月使用Postgresql的时候,经常遇到ltree的数据,感觉有些别扭,可是有绕不过去。今天决心整理一下,以后使用方便一些。

一、简介

ltree是Postgresql的一个扩展类型,由两位国外PostgreSQL贡献者共同开发。网址如下:http://www.sai.msu.su/~megera/postgres/gist

二、目的

开发这个类型的目的是为了解决复杂的树状模型相关问题,如图:

也是这个网址提到的内容:http://blog.163.com/[email protected]/blog/static/163877040201132843255911/

三、详解

3.1 是否安装ltree

执行sql:select * from pg_extension where extname = ‘ltree‘;

extname        | ltree
extowner       | 10
extnamespace   | 2200
extrelocatable | t
extversion     | 1.0
extconfig      |
extcondition   | 

如果没有安装,参考网站:http://blog.163.com/[email protected]/blog/static/1638770402011427104710922/

3.2 定义

ltree是由标签和分隔符组成的字符串,比如:L1.L2.L3

  • 分隔符:一般是小数点
  • 标签:目前支持由A-Za-z0-9_组成字符串
  • 路径:标签本身也是路径
  • lquery:可以理解为一个搜索ltree的正则表达式,例如:*.test.*,表示任何包含test标签的路径
  • ltxtquery:同上,一般用于全文扫描。

四、操作符

操作符 返回值  描述 
ltree @> ltree           boolean 左手边参数是右手边的祖先(或者平辈)吗?
ltree <@ ltree      boolean 左手边参数是右手边的后代(或者平辈)吗?
ltree ~ lquery   boolean ltree 匹配 lquery 吗?
lquery ~ ltree  boolean ltree 匹配 lquery 吗?

五、事例

时间: 2024-08-14 23:27:02

postgresql ltree类型的相关文章

postgresql 数组类型初步实践

实践环境 数据库:postgresql 9.4:操作系统:windows 创建包含数组类型的数据库 注意在设置default 值时(当然你可以不指定默认值),要声明数组的类型,像这样声明"::bigint[]". create table testarray( id serial primary key, images bigint[] default array[]::bigint[] ); 插入数组值 注意插入数组时,也要声明数组的类型,同上 insert into testarr

postgresql数字类型

postgresql的数据类型很多,也可以使用create type命令创建自定义数据类型,但常用的数据类型是以下三种: l  数字数据类型 l  字符串数据类型 l  日期/时间数据类型 数字数据类型 数字数据类型用于指定表中的数字数据,详情如下表所示: 名称 描述 存储大小 范围 smallint 存储整数,小范围 2字节 -32768 至 +32767 integer 存储整数.使用这个类型可存储典型的整数 4字节 -2147483648 至 +2147483647 bigint 存储整数

postgreSQL ltree工具获取上下级

select * from departments /* 查询子级部门 path <@ '' 查询上级部门 path @> path: 部门id用'.'连接*/select id,name,path,parent_id from departments where path <@ cast('NE*********Pc.NE*********Pd.NE*********Ra' as ltree)

PostgreSQL字段类型说明

BIGSERIALSERIAL8 存储自动递增的惟一整数,最多 8 字节. BIT 固定长度的位串. BIT VARYING(n)VARBIT(n) 可变长度的位串,长度为 n 位. BOOLEAN 存储逻辑布尔值(true/false/unknown),可以是 TRUE.t.true.y.yes 和 1,或者 FALSE.f.false.n.no 和 0. BYTEA 用于存储大型二进制对象(比如图形)的原始二进制数据.使用的存储空间是 4 字节加上二进制串的长度. CHAR(n)CHARAC

postgresql(2)

mysql转换postgresql 1)时间格式转换from_unixtime(timestamp,'%Y-%m-%d' )  ==> SELECT to_char(to_timestamp(t.create_time / 1000), 'YYYY-MM-DD HH24:MI:SS') 2)字段拼接GROUP_CONCAT(restaurantid,'|',cityid)  ==> select array_to_string(ARRAY(SELECT unnest(array_agg(res

postgreSQL数据库(索引、视图)

索引的含义与特点 索引是一个单独的.存储在磁盘上的数据库结构,它们包含对数据所有记录的引用指针,postgresql列类型都可以被索引,对相关列索引是提高查询操作效率的最佳途径.例如,查询select * from table where num=10000.如果没有索引,必须遍历整个表,如果在num上创建索引,PostgreSQL不需要任何扫描,直接索引里面找10000.就知道这行的位置. 索引的优点有:1234 唯一性索引,保证数据完整性2提高查询数据3实现数据参考的完整性,加速表与表连接4

JBoss EAP 为应用项目配置PostgreSQL数据源

一.前言 客户在计划将业务向云平台迁移,这些天也在测试将数据库由Oracle替换为开源的PostgrSQL.为什么选PostgreSQL?因为这是对应用程序代码修改最小的方案,没有之一! PostgreSQL数据库的简要信息为:服务器loacalhost,端口5432,数据库projadm,用户名/密码:projadm/proj2013. 开始前,在https://jdbc.postgresql.org/download.html下载与JBoss版本和JDK版本匹配的JDBC驱动包,存放某目录(

PentesterLab-From SQL Injection to Shell: PostgreSQL edition

一.打开页面,随便点了几下,返现和From SQL Injection to Shell差不多,直奔主题开始注入 由于PostgreSQL与MySQL不同,几个关注点需要注意下 二.order by下看看有几个字段 /cat.php?id=1%20order%20by%204 #order by 4正常,5出现报错,说明有4个字段 三.查看注入点在什么位置,这里与MySQL不同的是,不能再用select 1,2,3--的方式去探测,要改用null,因为PostgreSQL对类型限制很严格 htt

PostgreSQL的架构

是最先进的数据库.他的第一个版本在1989年发布,从那时开始,他得到了很多扩展.根据db-enginers上的排名情况,PostgreSQL目前在数据库领域排名第四. 本篇博客,我们来讨论一下PostgreSQL的内部架构,以及各个组件之间如何交互.这将是本期PostgreSQL DBA系列博客的基石. 一.PostgreSQL的架构 PostgreSQL的物理架构非常简单,它由共享内存.一系列后台进程和数据文件组成. (如下图) 二.Shared Memory 共享内存是服务器服务器为数据库缓