select sum(case when substring(字段1,1,1)=substring(字段2,1,1) then 1 when substring(字段1,2,1)=substring(字段2,2,1) then 1 ...when substring(字段1,15,1)=substring(字段2,15,1) then 1 else 0 end) >=12
调试欢乐多
from 表
where left(身份证号, 12) in (select left(身份证号, 12)
from 表
group by
left(身份证号, 12)
having count(*) > 1)
select 身份证号 from tb group by left(身份证号,12) having count(*) > 1 假设身份证号是15位或18位select 身份证号 from
(
select 身份证号 from tb where len(身份证号) = 15
union all
select substring(身份证号,1,6) + substring(身份证号,9,9) as 身份证号 from tb where len(身份证号) = 18
) t
group by left(身份证号,12)
FROM table1 a, table2 b
WHERE ( Abs(sign(substring(a.id,1,1)-substring(b.id,1,1)))
+ Abs(sign(substring(a.id,2,1)-substring(b.id,2,1)))
+ Abs(sign(substring(a.id,3,1)-substring(b.id,3,1)))
+ Abs(sign(substring(a.id,4,1)-substring(b.id,4,1)))
+ Abs(sign(substring(a.id,5,1)-substring(b.id,5,1)))
+ Abs(sign(substring(a.id,6,1)-substring(b.id,6,1)))
+ Abs(sign(substring(a.id,7,1)-substring(b.id,7,1)))
+ Abs(sign(substring(a.id,8,1)-substring(b.id,8,1)))
+ Abs(sign(substring(a.id,9,1)-substring(b.id,9,1)))
+ Abs(sign(substring(a.id,10,1)-substring(b.id,10,1)))
+ Abs(sign(substring(a.id,11,1)-substring(b.id,11,1)))
+ Abs(sign(substring(a.id,12,1)-substring(b.id,12,1)))
+ Abs(sign(substring(a.id,13,1)-substring(b.id,13,1)))
+ Abs(sign(substring(a.id,14,1)-substring(b.id,14,1)))
+ Abs(sign(substring(a.id,15,1)-substring(b.id,15,1))) ) = 3
AND Len(a.id)=15
AND Len(b.id)=15