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

求助:无法在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 字段的值的末尾。

    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题