Postgres - 将文本转换为ltree

时间:2018-01-19 03:26:59

标签: postgresql ltree

我是postgres的新手,我希望利用ltree来实现分层数据结构。

我在varchar列中拥有数据和ltree结构(即domain.class.sublass),并且需要将ltree结构转换为具有正确ltree数据类型的另一列。

我认为text2ltree是可能管理这个的最佳方式,但即使在阅读了ltree文档和ltree函数信息之后也没有取得很大进展

我尝试了以下的许多组合

 alter table codes
alter column joinedclassname type ltree using text2ltree(joinedclassname);

但收到以下错误:

ERROR:  syntax error at position 26
********** Error **********

ERROR: syntax error at position 26
SQL state: 42601

我也尝试了以下内容并收到了同样的错误:

alter table codes
alter column joinedclassname type ltree using joinedclassname::ltree;

如何将varree列中的ltree hiearchary转换为具有ltree数据类型的列?

谢谢!

1 个答案:

答案 0 :(得分:2)

想出来:

ltree与连字符和空格无关。一旦我连接了值并删除了连字符和空格,它就可以正常工作。

SELECT text2ltree(replace(concat_ws('.', Systemname::text, SubsystemName::text,ClassName::text,SubclassName::text),'-','_')) FROM codes;