有一个非常简单的表格
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强制转换为某种东西,但我不知道它需要是什么。
我尝试了varchar
,text
,ltree
编辑:我正在使用Postgresql 11.1
答案 0 :(得分: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