我是postgres的新手,我想利用ltree作为层次数据结构。
我在varchar列中同时拥有数据和ltree结构(即domain.class.sublass),并且需要将ltree结构转换为另一个具有适当ltree数据类型的列。
我认为text2ltree是最好的管理方法,但是即使在阅读了ltree文档和ltree函数信息之后也没有取得很大进展。
我尝试了许多下面的组合
alter table codes
alter column joinedclassname type ltree using text2ltree(joinedclassname);但是收到以下错误:
错误:位置26 *错误*错误:位置26处的语法错误SQL状态: 42601
我还尝试了以下方法,并收到了同样的错误:
使用连接类名更改表代码、更改列连接类名类型ltree::ltree;
如何从varchar列转换为具有ltree数据类型的列?
谢谢!
发布于 2018-02-07 02:17:01
弄明白了:
ltree对连字符和空格不太好。一旦我连接了这个值,去掉了连字符和空格,它就可以正常工作了。
SELECT text2ltree(replace(concat_ws('.', Systemname::text, SubsystemName::text,ClassName::text,SubclassName::text),'-','_')) FROM codes;https://stackoverflow.com/questions/48333677
复制相似问题