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

pg-promise中带命名参数的WHERE col IN语法问题求助

pg-promise命名参数中:list与:csv的差异问题

首先给你明确结论:在你使用的pg-promise 5.7.1版本里,命名参数语法下:list和:csv确实不能互换,而且完全不需要用位置参数形式,用$(ids:csv)的写法就是正确的选择。

具体原因拆解:

  • 早期pg-promise(比如5.x系列)对命名参数和位置参数的修饰符处理逻辑存在差异。位置参数里$1:csv和$1:list可以互换,是因为这俩修饰符在位置参数场景下的行为一致——都会把数组转换成适合IN子句的逗号分隔格式,同时做好类型转义。
  • 但在命名参数场景下,旧版本的:list修饰符并没有适配PostgreSQL的IN子句语法,导致生成的SQL会出现语法错误;而:csv修饰符则会正确处理数组,把元素转成带引号(如果是字符串)、逗号分隔的格式,完美匹配WHERE id IN (...)的要求。

额外说明:

如果你后续升级到pg-promise 6.x及以上版本,这个问题会得到优化,命名参数下的:list和:csv会变得更兼容,但在你当前的5.7.1版本里,老老实实用$(ids:csv)就完全没问题,不需要折腾其他写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:11:49