【问题标题】:ORA-01795: maximum number of expressions in a list is 1000 , how to split the stringORA-01795: 列表中的最大表达式数为 1000,如何拆分字符串
【发布时间】:2014-02-10 08:24:01
【问题描述】:

如何拆分下面的字符串?

      A.x IN (changeList),

changeList 具有以下值,因此它使子句像这样:

       A.x IN (HEXTORAW('1E2956B9266F11DDA85810000000C959'),HEXTORAW   
             ('ADD834AD6A3911DF923C10000000C959'),HEX...........

上面的 IN 有超过 1000 个值,因此出现 ORA-01795 错误,如何修改它以便我有

A.X IN (id1, ..id999) 或 A.x IN (id1000,...),任何 c 代码都可以帮助我...

【问题讨论】:

  • 我会考虑将值放在外部表中,或者将它们作为数组传递,而不是试图将它们强制放入 in 子句 - here's an example using numbers,这可以很容易地适应字符串.

标签: c string oracle split ora-01795


【解决方案1】:

您必须编写一个循环,以块的形式执行 SQL,每个块有 1000 个条目。

或者,您可以将值插入表中,然后使用IN 子句进行子选择,因为使用子选择时,1000 个条目的限制不适用。仅当您使用带有硬编码值字符串的 SQL 时才会有此限制。

类似这样的:

select *
from mytable t
where t.column1 = value
and t.column2 in
(
    select my_values
    from my_temp_table
)

【讨论】:

    猜你喜欢
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    • 2018-07-14
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 2013-07-24
    相关资源
    最近更新 更多