gpt4 book ai didi

sql - 在 Postgresql 9.6.5 上使用 ltree 进行查询时出现语法错误

转载 作者:行者123 更新时间:2023-11-29 13:17:32 25 4
gpt4 key购买 nike

我在 Postgresql 9.6.5 上使用 ltree 扩展有问题

我有一个名为 category 的表,其中包含以下 DDL(我稍微简化了它):

CREATE TABLE dictionary.category
(
id serial not null constraint category_pkey primary key,
name text not null,
parent_id integer constraint category_parent_id_fkey references dictionary.category
);

创建 ltree 扩展后:

CREATE EXTENSION ltree;

我正在尝试进行一些查询,例如:

SELECT id, text2ltree(name) FROM dictionary.category;

SELECT id, name::ltree FROM dictionary.category;

或转义列名

SELECT id, text2ltree("name") FROM dictionary.category;

它给了我:

ERROR:  syntax error at position 12

一直

但是当我尝试时:

SELECT id, text2ltree('a.b.v') FROM dictionary.category;

SELECT id, text2ltree(id::text) FROM dictionary.category

它给了我正确的结果。

我想这与 name 是保留关键字有关。但为什么转义不起作用?我还尝试将列重命名为 abcd 之类的名称,但无论如何它都会给我语法错误。

先谢谢大家了!

最佳答案

回答我自己的问题。这些错误消息似乎与查询本身无关。它与可以包含在 ltree 路径中的文本相关。看起来 l 树路径只允许字母数字字符,仅此而已。

SELECT id, text2ltree(regexp_replace(name, '[^[:alpha:]]', '', 'g')) FROM dictionary.category;

返回正确的结果。

无论如何,错误信息是非常具有误导性的。

关于sql - 在 Postgresql 9.6.5 上使用 ltree 进行查询时出现语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46812956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com