求解一个SQL语句

ntsnow 2004-11-11 01:57:42
表TABLE中有两个字段:A、B,要找出字段A是字段B的一个子字符串的纪录,例如A是'abc',B是'abcde',但是like和IN好像都不好用,
select * from table where b like '%'||a||'%';

select * from table where a in b
都报错.
...全文
181 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
weizyan 2005-02-23
  • 打赏
  • 举报
回复
up ~
梦想成了相扑 2005-01-25
  • 打赏
  • 举报
回复
支持xiaofeixia03(笨笨),lizzz的做法是不对的。
jinjazz 2005-01-21
  • 打赏
  • 举报
回复
学习
baointoo1980 2005-01-14
  • 打赏
  • 举报
回复
好强啊!
xiaofeixia03 2005-01-04
  • 打赏
  • 举报
回复
insert into table(A,B) VALUES('ab','abbs');
insert into table(A,B) VALUES('abbs','abss');
insert into table(A,B) VALUES('abb','ab');

select * from table where Locate(a,b)>0;这条语句的执行结果是只查询A='ab',B='abbs'这一条值.
select * from table where a in(select b from table)这条语句的执行结果是A='ab',B='abbs'和A='abbs',B='abss'这两条值.

因为第一条语句必须是同一条记录的A,B字段值的关系;第二条语句是先把B字段的值取出后,只要A字段有值与其相等即可被查出。
donnydream 2005-01-04
  • 打赏
  • 举报
回复
xiaofeixia03(笨笨) 精彩,向笨笨致敬!完全同意其观点!
lizzz 2005-01-03
  • 打赏
  • 举报
回复
没试过是否可行,不过如果可行,如果数据量大,性能也是非常低的.
lizzz 2005-01-03
  • 打赏
  • 举报
回复
in后面跟德斯一个数据集,你可以试一下select * from table where a in(select b from table)
sisijianjian 2004-12-31
  • 打赏
  • 举报
回复
没错,同意楼上的,用Locate(str1,str2)
db2 => select distinct locate('a','bbbacee') from sql

1
-----------
4

1 条记录已选择。

Locate(str1,str2) 返回str1在str2中的位置
xiaofeixia03 2004-12-31
  • 打赏
  • 举报
回复
可以这样写:select * from table where Locate(a,b)>0;

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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