ltree连接在使用字段时失败但在使用文字时成功

ltree concatenation fail when using fields but succeed when using literals

用一个非常简单的table像这样

create table matpath (
    obj varchar primary key,
    path ltree
);

我正在尝试获取 运行 以下查询:

select path || obj from matpath;

但它不起作用,我得到 syntax error at position 8

如果我使用文字文本就可以了

select path || 'sometext' from matpath;

我怀疑我需要将 obj 转换为某些东西,但我不知道它需要是什么。

我试过了varchartextltree

编辑:我在 postgresql 11.1

从评论中发布的错误消息来看,您的 obj 列中似乎有一个无效字符,要找到它,请尝试

SELECT *
FROM matpath
WHERE obj !~ '^[a-zA-Z0-9_.]*$' -- find invalid characters
OR octet_length(path::varchar || obj) > 256 -- find keys that are potentially too long

Ltree 只能包含字符 A-Za-z0-9_.,并且不能超过 256 字节。

https://www.postgresql.org/docs/current/ltree.html#id-1.11.7.30.4