標籤:
最近一個月使用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 | ltreeextowner | 10extnamespace | 2200extrelocatable | textversion | 1.0extconfig | extcondition |
如果沒有安裝,參考網站:http://blog.163.com/[email protected]/blog/static/1638770402011427104710922/
3.2 定義
ltree是由標籤和分隔字元組成的字串,比如:L1.L2.L3
- 分隔字元:一般是小數點
- 標籤:目前支援由A-Za-z0-9_組成字串
- 路徑:標籤本身也是路徑
- lquery:可以理解為一個搜尋ltree的Regex,例如:*.test.*,表示任何包含test標籤的路徑
- ltxtquery:同上,一般用於全文掃描。
四、操作符
操作符 |
傳回值 |
描述 |
ltree @> ltree |
boolean |
左手邊參數是右手邊的祖先(或者平輩)嗎? |
ltree <@ ltree |
boolean |
左手邊參數是右手邊的後代(或者平輩)嗎? |
ltree ~ lquery |
boolean |
ltree 匹配 lquery 嗎? |
lquery ~ ltree |
boolean |
ltree 匹配 lquery 嗎? |
五、案例
postgresql ltree類型