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

Postgresql ltree连接在使用字段时失败,但在使用文本时成功,postgresql,ltree,Postgresql,Ltree,用这样一张非常简单的桌子 create table matpath ( obj varchar primary key, path ltree ); 我正在尝试运行以下查询: select path || obj from matpath; 但它不起作用,我在第8位遇到语法错误 如果我使用文本,它就可以工作 select path || 'sometext' from matpath; 我怀疑我需要将obj投射到某个东西上,但我不知道它需要是什么 我尝试了varchar,t

用这样一张非常简单的桌子

create table matpath (
    obj varchar primary key,
    path ltree
);
我正在尝试运行以下查询:

select path || obj from matpath;

但它不起作用,我在第8位遇到语法错误

如果我使用文本,它就可以工作

select path || 'sometext' from matpath;
我怀疑我需要将obj投射到某个东西上,但我不知道它需要是什么

我尝试了
varchar
text
ltree


编辑:我正在使用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字节


您的
obj
列是否只包含
A-Za-z0-9
字符?句点
字符也有效我相信,但是您的组合键必须低于256字节@lucas:是的,出于某些原因仍然不起作用抛出的错误是什么?位置8处的语法错误