我在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中提取数字以更改正则表达式。