doumianfeng5065 2017-07-20 16:58 采纳率: 0%
浏览 2221

求助:无法在PostgreSQL中CONCAT列和另一个字符串

我有一个PostgreSQL表,其文本字段的默认值为空字符串(‘’),它将是一个标记列表。我试图通过使用CONAT追加一个字符串来更新该字段,但它不起作用。这是我的SQL:

UPDATE pins SET tags = concat(tags, :tagString) WHERE id = :id

$tagString 看起来会是这样的:

[5378]

类似的查询也是这样工作的:

UPDATE pins SET tags = :tagString WHERE id = :id

问题似乎出在 concat 功能上。哪里出错了?

  • 写回答

1条回答 默认 最新

  • 冰点. 优质创作者: 编程框架技术领域 2023-05-23 17:52
    关注

    在 PostgreSQL 中使用 concat() 函数连接字符串时,需要注意以下几点:

    1. concat() 函数需要至少两个参数,如果其中任意一个参数为 NULL,则结果为 NULL

    2. 在使用 concat() 函数时,需要保证连接的两个字符串都不为 NULL。如果其中一个字符串为 NULL,则结果仍为 NULL

    在你的更新查询中,如果 tags 字段的值为 NULL,则使用 concat() 函数会返回 NULL,导致更新失败。为了避免这种情况,你可以使用 coalesce() 函数将 tags 字段的值转换为一个非 NULL 的值,例如空字符串('')。

    因此,你可以尝试以下查询:

    UPDATE pins SET tags = concat(coalesce(tags, ''), :tagString) WHERE id = :id
    

    这将首先使用 coalesce() 函数将 tags 字段的值转换为一个非 NULL 的值,如果它为 NULL,则将其转换为空字符串('')。然后,使用 concat() 函数将 tagString 参数追加到 tags 字段的值的末尾。

    评论

报告相同问题?