oracle in的使用,求解

1、查询数据Where条件需要用到多个所以就用了in,in(参数通过SQL查询)IN的参数查到但是数据查询不到。

2、图片说明这个数据是IN的参数('A','B')

3、图片说明
这个是需要查询数据的表。

4、图片说明选中部分的IN是输入参数可以正常查询到数据。

5、图片说明
选中部分的IN是通过SQL查询取到参数,但是查询不到数据。

3个回答

试下这个SQL

select * from b where 
instr((select value from a where id=1),value) > 0
renkai721
renkai721 麻烦采纳下,谢啦。
7 个月之前 回复
weixin_43747846
weixin_43747846 可以了,谢谢
7 个月之前 回复

嵌套语句中value是关键字,导致你查不出值,把字段名'value'改一下就行了

weixin_43747846
weixin_43747846 改了,还是没有查询到,我看的意思in的子查询查出来的ORACLE自动编译为一个字符串
7 个月之前 回复

使用execute immediate方式,以下是完整示例
create table T_INSERT
(
val VARCHAR2(20)
);
insert into T_INSERT values('A','B');
create table T_INSERT_DATA
(
val VARCHAR2(100)
);
insert into T_INSERT_DATA values('A');
insert into T_INSERT_DATA values('B');
insert into T_INSERT_DATA values('C');
--测试PLSQL
declare
v_param varchar2(50) := '';
v_count number := 0;
v_sql varchar2(1000) := '';
begin
for i in (select t.val from T_INSERT t) loop
v_param := i.val;
dbms_output.put_line(v_param);
v_sql := 'select count(1) from T_INSERT_DATA d where d.val in (' ||v_param || ')';
dbms_output.put_line(v_sql);
execute immediate v_sql into v_count;
dbms_output.put_line(v_count);
end loop;
end;

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问