我正在从Java程序中执行PostgreSQL数据库查询,查询语句如下:
SELECT ... FROM table_name WHERE column_name IN("<list of values>");
问题在于值列表是动态创建的,其大小没有限制,当该列表变得太大时,我会收到一个带有消息“堆栈深度长度超过限制”的PSQLException异常。 我的问题是,在发生此异常之前,我如何确定可以使用多少参数来使用IN子句?假设max_stack_depth为2MB,我可以使用它来确定我可以在IN子句中使用多少参数吗?
column_name IN("<第一个值列表>") OR column_name IN("<第二个值列表>")
吗?它是否允许你传递更多的项?我曾经用这个技巧解决了 Oracle 中的一个问题。但我不确定在 Postgresql 中是否可行。 - Sergey KalinichenkoSELECT version()
中显示您的PostgreSQL版本。 - Craig Ringer