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

时间:2019-05-08 11:30:29

标签: postgresql ltree

有一个非常简单的表格

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

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