求一sql

wangzhe696 2009-07-09 02:47:14
我要查询某个表的字段信息
要求是
此字段包含另外一个表中以个字段的内容


比如
1
中国人
美国人
日本人
日本
是中
禁用
2
中中国人人
美国人
日本人
本日本名
我是中国人
我查询的是1表,等到的记录应该 除了 '禁用' 都检索到

...全文
25 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangzhe696 2009-07-09
  • 打赏
  • 举报
回复
select a.cname from ,
where a.cname like '%'||a1.tname||'%' ;



select a.cname,a1.tname,instr(a1.tname,a.cname,1,1)from a,a1 where instr(a1.tname,a.cname,1,1)>0
dinya2003 2009-07-09
  • 打赏
  • 举报
回复
SQL>
SQL> create table table01( name varchar2(300));
Table created
SQL> insert into table01 values('中国人');
1 row inserted
SQL> insert into table01 values('美国人');
1 row inserted
SQL> insert into table01 values('日本人');
1 row inserted
SQL> insert into table01 values('日本');
1 row inserted
SQL> insert into table01 values('是中');
1 row inserted
SQL> insert into table01 values('禁用');
1 row inserted
SQL> commit;
Commit complete
SQL> create table table02( name varchar2(300));
Table created
SQL> insert into table02 values('中中国人人');
1 row inserted
SQL> insert into table02 values('美国人');
1 row inserted
SQL> insert into table02 values('日本人');
1 row inserted
SQL> insert into table02 values('本日本名');
1 row inserted
SQL> insert into table02 values('我是中国人');
1 row inserted
SQL> commit;
Commit complete

SQL> select * from table01;
NAME
----------------------------------------------------
中国人
美国人
日本人
日本
是中
禁用

6 rows selected

SQL> select * from table02;

NAME
-----------------------------------------------------
中中国人人
美国人
日本人
本日本名
我是中国人

SQL> select * from table01 a
2 where exists(select 1 from table02 b
3 where instr(b.name,a.name,1) !=0
4 );

NAME
-----------------------------------------------------
中国人
美国人
日本人
日本
是中

SQL> drop table table01;
Table dropped

SQL> drop table table02;
Table dropped

SQL>
wangzhe696 2009-07-09
  • 打赏
  • 举报
回复
3楼你不能得到
NAME
--------------------
中国人
美国人
日本人
日本
是中
这个吧!!!
wangzhe696 2009-07-09
  • 打赏
  • 举报
回复
我说的是一楼不满足3楼的我测试看看
csuxp2008 2009-07-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wangzhe696 的回复:]
也不对 我不是要模糊查询 不满足我的要求
[/Quote]

那把你的要求说清楚
wangzhe696 2009-07-09
  • 打赏
  • 举报
回复
也不对 我不是要模糊查询 不满足我的要求
csuxp2008 2009-07-09
  • 打赏
  • 举报
回复

SQL> select * from table1;

NAME
--------------------
中国人
美国人
日本人
日本
是中
禁用

6 rows selected

SQL> select * from table2;

NAME
--------------------
中中国人人
美国人
日本人
本日本名
我是中国人

SQL>
SQL> select *
2 from table1 t1
3 where exists(select * from table2 t2 where t2.name like '%'||t1.name||'%');

NAME
--------------------
中国人
美国人
日本人
日本
是中
csuxp2008 2009-07-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 Robin_Ares 的回复:]
select * from t1
where not exists
(select 1 from t2 where t2.n like '%'||t1.n||'%')
[/Quote]

楼上逻辑错了,多了个not
robin_ares 2009-07-09
  • 打赏
  • 举报
回复
select * from t1
where not exists
(select 1 from t2 where t2.n like '%'||t1.n||'%')

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧