跨表进行模糊查询的问题
表结构如下
table1:
字段1=姓名、字段2=身份证号码、字段3=住址、字段4=.....
table2:
字段1=姓名、字段2=身份证号码、字段3=住址、字段4=.....
想通过数据库查询语言得出两表中身份证号码相似的记录,比如现在有个具体要求,将两表中身份证号码只相差一位(“第1位-第18位",任意一个位置存在差异都可以)的记录列举出来。
select * from table111 where right(字段2,17) in (select right(字段2,17) from table2)
select * from table111 where left(字段2,1)+right(字段2,16) in (select left(字段2,1)+right(字段2,16) from table2)
select * from table111 where left(字段2,2)+right(字段2,15) in (select left(字段2,2)+right(字段2,15) from table2)
.....
select * from table111 where left(字段2,15)+right(字段2,2) in (select left(字段2,15)+right(字段2,2) from table2)
select * from table111 where left(字段2,16)+right(字段2,1) in (select left(字段2,16)+right(字段2,1) from table2)
select * from table111 where left(字段2,17) in (select left(字段2,17) from table2)
上面18条语句只能分别对“第1位-第18位”指定一个位置上存在差异的记录进行单独查询,有重复不说(身份证号码完全一样的记录将出现在18次查询中的每一次),而且只能得到table1中的匹配记录,无法得到table2中的被匹配记录。
有没有办法将两表中只相差1位的记录一次输出,每一次的匹配作为一个单元:包括table1和table2中的符合匹配条件各一条记录。