我是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数据类型的列?
谢谢!
答案 0 :(得分:2)
想出来:
ltree与连字符和空格无关。一旦我连接了值并删除了连字符和空格,它就可以正常工作。
SELECT text2ltree(replace(concat_ws('.', Systemname::text, SubsystemName::text,ClassName::text,SubclassName::text),'-','_')) FROM codes;