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
我这有个笨办法,可以尝试下:
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可以用select name from b inner join a on instr(b.id,a.id)>0
评论
有用 0回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏

