提问于6天前
oracle sql模糊查询问题
select name from b where b.id in(select id from a)
b表的id字段的值包含a表的id字段的值,我想使用这种方式来查询数据好像不行,请问有什么办法实现吗。
已知b表的id字段值包含a表的id字段值,但是a表的id字段值在哪个位置无规律,就是说不确定a表的值在b表的id字段具体哪个位置。
问题补充
写回答
5条回答
默认
最新
难道是我理解错了吗。我觉得一句话就可以搞定了啊。
select name from b where
exists(select 1 from a where b.id like ‘%’||a.id||’%’)
0
0
2
展开评论
我这有个笨办法,可以尝试下:
sql> create table a (id varchar2(20),name varchar2(30));
table created.
sql> insert into a values('12ab','z3');
1 row created.
sql> insert into a values('45cd','l4');
1 row created.
sql> commit;
commit complete.
sql> create table b as select * from a;
table created.
sql> update b set id='012abc' where id='12ab';
1 row updated.
sql> commit;
commit complete.
sql> select * from b;
id name
-------------------- ------------------------------
012abc z3
45cd l4
sql> insert into b values ('67g','w5');
1 row created.
sql> commit;
commit complete.
sql> select * from b;
id name
-------------------- ------------------------------
012abc z3
45cd l4
67g w5
sql> create table c (name varchar2(40));
table created.
declare
cursor cur1 is select id from a;
v_id varchar2(100);
a_id varchar2(100);
v_sql varchar2(1000);
begin
open cur1;
loop
fetch cur1 into v_id;
exit when cur1%notfound;
dbms_output.put_line('v_id is:'||v_id);
select '%'||v_id||'%' into a_id from dual;
v_sql := 'insert into c select name from b where id like :1';
dbms_output.put_line(v_sql);
execute immediate v_sql
using a_id;
end loop;
close cur1;
end;
/
sql> select * from c;
name
----------------------------------------
z3
l4
0
0
1
展开评论
回复问题
问题信息
请登录之后查看
邀请作答
暂无人订阅该标签,敬请期待~~
高分悬赏