最近一个月使用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