两个查询:
第一个为:
with table_1 as ( select 'Item '||level item_name, level lvl from dual connect by level <= 10000 ) select * from table_1 where lvl in (1,2,3,4,5,6,7,....,997,998,999,1000)
另一个为:
with table_1 as ( select 'Item '||level item_name, level lvl from dual connect by level <= 10000 ) select * from table_1 where lvl in (1,2,3,4,5,6,7,....,1997,1998,1999,2000)
我可以在cx-oracle中运行第一个查询,但不能运行第二个查询。我知道第二个的大小不同,LOB / CLOB的概念也正在发挥作用,但是我不确定如何在这里使用它。
我可以创建一个CLOB并执行查询吗?还是我认为这是错误的?
答案 0 :(得分:0)
在“ IN”条件下可以输入的值不能超过1000。它记录在下面: https://docs.oracle.com/database/121/SQLRF/conditions014.htm
您可以在expression_list中最多指定1000个表达式。
如果需要更多内容,则需要将这些值放在表中并执行以下操作:
select ... where lvl in (select lvl from lvl_table)
但是我会问您为什么要使用IN?您的列表看起来像是连续的数字列表,如果准确,则可以简单地使用
where level <= 10000
或使用“之间”或大于,小于“或”的任何组合。