在sql条件中,如果where in()中想传入参数
select * from table t where where t.itemNo in (V_parameter);
当传进去单个值的时候,是没有问题的
V_parameter := '70';
但如果传入多个值,因为缺少单引号的问题,导致查询不到结果
V_parameter := '12,13';
一开始尝试手动拼字符串,但是失败
V_parameter := ''||'12||'',''||13'||'';
解决方法:使用正则变换函数regexp_substr() ,如下:
V_parameter := '12,13';
select * from table t where where t.itemNo in
(SELECT
REGEXP_SUBSTR(V_parameter,'[^,]+', 1, LEVEL)
FROM DUAL
CONNECT BY
REGEXP_SUBSTR(V_parameter, '[^,]+', 1, LEVEL) IS NOT NULL) ;
此时sql语句相当于,可以成功实现查询
select * from table t where where t.itemNo in ('12','13') ;