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 转换为某些东西,但我不知道它需要是什么。
我试过了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 字节。
https://www.postgresql.org/docs/current/ltree.html#id-1.11.7.30.4
用一个非常简单的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 转换为某些东西,但我不知道它需要是什么。
我试过了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 字节。
https://www.postgresql.org/docs/current/ltree.html#id-1.11.7.30.4