select 论文表.* from 学生表,论文表 where 学生表.班级=EDIT1.TEXT and 学生表.作者姓名=论文表.作者姓名 不知道你的条件“所有作者姓名及通讯作者的所有论文数据”是不是上面的条件?如果必须和通讯作者一致,再加上一个“ and 学生表.作者姓名=论文表.通讯作者 ” 大概是这样了,看看结果对不对
条件改成: Charindex(学生表.作者姓名,论文表.作者姓名,0)>0
select 论文表.* from 学生表,论文表 where Charindex(EDIT1.TEXT,学生表.班级,0)>0 and 学生表.作者姓名=论文表.作者姓名 and Charindex(学生表.作者姓名,论文表.通讯作者,0)>0 你试一试是不是这样
哦,我的数据库是SQl Server 2008 R2,不同的数据库可能判断子字符串的函数不同,仅提供思路参考吧
建议使用 like 语句。第一步,由学生表,获取“作者姓名”,比如“张三王四李二” 每二步,将“张三王四李二”分解成单人名(如果你在保存数据时, 在每人个人名后加一个“,”字符,就更好分了) 比如: S1,s2,s3分别保存分解的姓名 第三步:使用Link的模糊搜索: 'select * from 论文表 where (作者姓名 like '+#39+'%'+S1+'%'+#39+') or (通讯作者 like '+#39+'%'+S1+'%'+#39+') or '+ ' (作者姓名 like '+#39+'%'+S2+'%'+#39+') or (通讯作者 like '+#39+'%'+S2+'%'+#39+') or '+ ' (作者姓名 like '+#39+'%'+S3+'%'+#39+') or (通讯作者 like '+#39+'%'+S3+'%'+#39+') ';
where 学生表.班级=EDIT1.TEXT and 学生表.作者姓名=论文表.作者姓名
不知道你的条件“所有作者姓名及通讯作者的所有论文数据”是不是上面的条件?如果必须和通讯作者一致,再加上一个“ and 学生表.作者姓名=论文表.通讯作者 ”
大概是这样了,看看结果对不对
Charindex(学生表.作者姓名,论文表.作者姓名,0)>0
where Charindex(EDIT1.TEXT,学生表.班级,0)>0 and 学生表.作者姓名=论文表.作者姓名 and Charindex(学生表.作者姓名,论文表.通讯作者,0)>0
你试一试是不是这样
每二步,将“张三王四李二”分解成单人名(如果你在保存数据时, 在每人个人名后加一个“,”字符,就更好分了)
比如: S1,s2,s3分别保存分解的姓名
第三步:使用Link的模糊搜索:
'select * from 论文表 where (作者姓名 like '+#39+'%'+S1+'%'+#39+') or (通讯作者 like '+#39+'%'+S1+'%'+#39+') or '+
' (作者姓名 like '+#39+'%'+S2+'%'+#39+') or (通讯作者 like '+#39+'%'+S2+'%'+#39+') or '+
' (作者姓名 like '+#39+'%'+S3+'%'+#39+') or (通讯作者 like '+#39+'%'+S3+'%'+#39+') ';
select a.*,b.* from 论文表 a inner joing 学生表 b on a.作者姓名=b.作者姓名
where a.通讯作者 like '%edit.text%'