postgres sql脚本unnest(array [someArray])如何发送3个数组

问题描述 投票:0回答:1

我无法将3个数组发送到sql脚本,它会引发异常

<code>select t.ttt, t.created_date, concat_ws('-',lp.mmm, lp.ccc, lp.eee ) from tasks t
join positions p on t.id = p.task_id
left join lte_position lp on p.id = lp.id
where t.ttt in (:identities) and (lp.mmm, lp.ccc, lp.eee) in
((select mmm,ccc,eee from ((select unnest(array[:mmm]) as mmm, unnest(array[:ccc]) as ccc, unnest(array[:eee]) as eee)) as temp))
order by t.ttt DESC</code>

我想在mmm,ccc,eee中发送3个数组,当我在postgres控制台中尝试时,它可以正常工作,但是当我在java代码中尝试时,抛出异常org.postgresql.util.PSQLException:错误:无法将类型记录转换为整数位置:474

java postgresql jdbc
1个回答
0
投票

您编写它的方式,PostgreSQL认为您的整个参数字符串都是单个整数。

而不是

unnest(array[:mmm])

使用

unnest(CAST(:mmm AS integer[])

但是参数必须看起来像

{1,23,456}

包括花括号。这是PostgreSQL中数组的字符串表示形式。

其他观察:为什么使用:mmm? JDBC参数必须写为?

© www.soinside.com 2019 - 2024. All rights reserved.