我在BIP中使用以下查询,并引发“无效号码”错误。相同的查询在Toad中工作正常。有人可以告诉我为什么我得到ORA-01722:无效的数字。仅使用1个参数时,它工作正常,仅当我们选择多个选项时,才会出现此错误。

我们正在使用String数据类型作为参数ref_std

这是每个值包含的要点

multilist01-包含csv值,例如',100,200,300,400'

:ref_std-将是一个参数(多选),例如EN 60439-1:1999,EN 60439-3:1991



select * from
(
select cert.multilist01
from
some_table
) xx
join
(

select id as input from some_table where item_number in
(
select regexp_substr(:ref_std,'[^,]+', 1, level) ID
from dual
connect by regexp_substr(:ref_std,'[^,]+', 1, level) is not null
)


)yy on xx.multilist01 like '%'||yy.input||'%'

最佳答案

第一:Item_number必须为String,因为ref_std不是数字,否则您必须更改'[^,] +'才能提取数字。
如果cert.multilist01是具有100 200 300的行,则此数字是数字,您不能与“ yy”(即String)“连接”。
您必须在字符串中转换cert.multilist01(在some_table中的列),或者仅在ref_std中提取数字以更改正则表达式。

10-05 23:45