You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL使用array_remove操作BIGINT数组报错问题咨询

解决PostgreSQL中array_remove操作bigint[]数组的类型不匹配报错

你遇到的这个报错完全是参数类型不匹配搞的鬼!虽然PostgreSQL文档里说array_remove支持anyarray和anyelement类型,但它对类型一致性要求特别严格——你写的1默认是integer类型,而你的数组是bigint[],两者类型不兼容,数据库自然找不到对应的函数重载了。

两种快速解决方法:

  • 显式类型转换:把要移除的元素转成bigint类型,用::bigint或者CAST语法都可以:
    UPDATE MyTABLE 
    SET MyBigIntArray = array_remove(MyBigIntArray, 1::bigint) 
    WHERE id=10;
    
  • 直接使用bigint字面量:在数字后面加L后缀,PostgreSQL会识别为bigint类型:
    UPDATE MyTABLE 
    SET MyBigIntArray = array_remove(MyBigIntArray, 1L) 
    WHERE id=10;
    

补充说明:

PostgreSQL的函数重载是严格匹配参数类型的,不存在array_remove(bigint[], integer)这个版本的函数,只有当第二个参数的类型和数组元素类型完全一致(也就是bigint)时,对应的array_remove(bigint[], bigint)函数才会被正确调用。这也是为什么你明明看了文档说支持任意数组和元素,却还是报错的原因——类型匹配没做好!

内容的提问来源于stack exchange,提问作者Crafty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:19:13