如何在单次查询中向PostgreSQL数组字段添加多个值?
问题根源
array_append 函数仅支持向数组追加单个元素,你直接传入完整JS数组作为参数时,PostgreSQL会将整个数组识别为单个字符串类型的元素塞入目标数组,就会出现你遇到的嵌套转义结果。
解决方案
直接使用PostgreSQL的数组拼接运算符||或者数组拼接函数array_cat即可实现单次调用追加多个元素,不需要循环调用:
写法1(推荐,语法更简洁)
// 直接用||拼接两个数组 const addNumbers = 'UPDATE numTable SET columnName = columnName || $1 WHERE uid = $2' const x = ["1","2","3"] query(addNumbers, [x, uid]);
写法2(使用array_cat函数,效果和写法1完全一致)
const addNumbers = 'UPDATE numTable SET columnName = array_cat(columnName, $1) WHERE uid = $2'
边界情况兼容
如果目标列columnName可能存在NULL值,建议用coalesce函数处理空值,避免拼接结果为NULL:
const addNumbers = 'UPDATE numTable SET columnName = coalesce(columnName, \'{}\'::text[]) || $1 WHERE uid = $2'
内容的提问来源于stack exchange,提问作者nickcoding2
相关产品推荐
相关产品推荐

