2

我是 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;

如何将 ltree 层次结构从 varchar 列转换为具有 ltree 数据类型的列?

谢谢!

4

1 回答 1

6

弄清楚了:

ltree 不能很好地处理连字符和空格。一旦我连接了值并去掉了连字符和空格,它就可以正常工作了。

SELECT text2ltree(replace(concat_ws('.', Systemname::text, SubsystemName::text,ClassName::text,SubclassName::text),'-','_')) FROM codes;
于 2018-02-07T02:17:01.083 回答