gpt4 book ai didi

postgresql - 如何用字符串更新 text[] 字段

转载 作者:行者123 更新时间:2023-11-29 12:38:08 25 4
gpt4 key购买 nike

我有一个表,其中有一个名为 tags 的字段,它可以包含任意数量的字符串:

                                Table "public.page"
Column | Type | Modifiers
----------------------+--------------------------+----------------------------------
tags | text[] | not null default ARRAY[]::text[]

我想在标签字段中添加一个字符串 - 但我似乎无法让 concat 函数为我工作。我试过:

update page set tags=concat('My New String',tags);
ERROR: function concat(unknown, text[]) does not exist
LINE 1: update page set tags=concat('My New String',tags) where ...
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.

update page set tags=('My New String'||tags);
ERROR: operator is not unique: unknown || text[]
LINE 1: update page set tags = ('My New String' || tags) where w...
^
HINT: Could not choose a best candidate operator. You might need to add explicit type casts.

有什么想法吗?

最佳答案

在 PostgreSQL 的类型系统中,文字 'My New String' 不是 varchartext 值,而是 类型的文字code>unknown,可以按任意类型处理。 (例如,date 的文字可以是 '2013-08-29';这不会作为 varchar 处理,然后转换为 date,它将被解释为非常低级别的“date 文字”。)

通常,PostgreSQL 可以自动推导类型,但当它不能时,您需要使用以下之一告诉它您希望文字被视为文本:

  • text 'My New String'(SQL 标准文字语法)
  • Cast('My New String' as text)(SQL 标准转换语法,但在此上下文中不是真正的转换)
  • 'My New String'::text(PostgreSQL 非标准转换语法,但可读性强)

在您的情况下,错误消息 operator is not unique: unknown || text[] 表示 Postgres 可以将文字解释为多种类型,每种类型都有自己的 || 运算符定义。

因此您需要这样的东西(我删除了不必要的括号):

update page set tags = 'My New String'::text || tags;

关于postgresql - 如何用字符串更新 text[] 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18515885/

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