0

像这样一个非常简单的表

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,,,textltree

编辑:我在 postgresql 11.1

4

1 回答 1

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

于 2019-05-08T13:35:00.030 回答