【发布时间】:2014-02-28 10:38:22
【问题描述】:
我必须通过 JDBC 调用
执行下面的查询select primaryid from data where name in ("abc", adc", "anx");
问题在子句中,我必须传递 11000 个字符串。我可以在这里使用准备好的语句吗?或任何人可以建议的任何其他解决方案。我不想为每条记录执行查询,因为它很耗时。我需要在更短的时间内运行此查询。
我正在使用 DOMParser 从 XML 文件中读取字符串。我正在使用 sql server db。
【问题讨论】:
-
请更详细地解释这个问题。它是在创建长查询吗?
-
你从哪里得到字符串?另一个查询或来自数据库之外的某个地方?如果我没记错的话,在准备好的语句中可以拥有的参数数量是有限制的,大约 2000 个左右。
-
对于 oracle,限制为 1000。对于其他数据库,限制通常是查询的最大长度。如果无法从数据库查询中获得此列表,您可以将其插入临时表并加入此临时表。
-
@Vilen: 查询很简单(写有问题),但由于子句中的参数数量,它变得非常大。所以我不能写 select * from data where id in (?,?,?)。此外,值的数量不是恒定的。它因人而异。
标签: java sql sql-server jdbc prepared-statement