求一个可以查询姓名相同,身份证号相似的SQL语句

qq2013 2011-03-25 11:11:07
求一个可以查询姓名相同,身份证号相似的SQL语句

如有以下表数据

FID FName FIC Fsex
1 张三 430403198801271234 男
2 张三 430403198801271235 男
3 张三 41041319980129 男
4 张三 530403198801271234 男
5 李国 43040319540514121X 男


求一个SQL可以把 FID=1,FID=2,FID=4查询出来的语句
因为FID=1,FID=2,FID=4 的身份证号FIC只有一位不相同
...全文
1887 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
酷儿 2011-03-25
  • 打赏
  • 举报
回复
顶一下8楼的
纯唇Yu弄 2011-03-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 seanding1989 的回复:]

SQL code
select * from Member where name='张三' and fic like '%403%'
或者
select * from Member where name='张三' and fic like '%4031988%'


结果就是 1.2.4

给分谢谢!
[/Quote]

太有才了..

建议还是用程序代码来处理吧 ! 不要把过多的任务都交给数据库
anbin0814 2011-03-25
  • 打赏
  • 举报
回复
估计写一个存储过程判断身份证是否相似
xrongzhen 2011-03-25
  • 打赏
  • 举报
回复
这是计算字符串相似度的问题 是个很复杂的

没时间研究 帮顶吧
SeanDing1989 2011-03-25
  • 打赏
  • 举报
回复
select  * from Member where name='张三' and fic like '%403%'
或者
select * from Member where name='张三' and fic like '%4031988%'


结果就是 1.2.4

给分谢谢!
  • 打赏
  • 举报
回复
SQL里面写存储过程吧。。。一个SQL。。。。。还不是存储过程的代码。。。。
  • 打赏
  • 举报
回复
304031988012712355这个算不算相似呢?
qq2013 2011-03-25
  • 打赏
  • 举报
回复
表里面的数据如下:
FID FName FIC Fsex
1 张三 430403198801271234 男
2 张三 430403198801271235 男
3 张三 41041319980129 男
4 张三 530403198801271234 男
5 李国 43040319540514121X 男
xrongzhen 2011-03-25
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 qq13237810775 的回复:]
现在做了一个报名系统,为了防止别人重复报名,就做了相同的身份证号不能报名,可是有的人就把身份证号的一两位修改了,这样就报名进去了.现在主要是想很快把像这样的人找出来,就是姓名相同,身份证号只一一两位不同的.
[/Quote]

没必要,像你这么说,身份证只是用于标识,没联网验证的话。这个没什么意义,他随便输18位,也没办法啊

应该有个唯一的标识参照。
zhoudianzhang 2011-03-25
  • 打赏
  • 举报
回复
用身份证可以的呀!
highsys 2011-03-25
  • 打赏
  • 举报
回复
你非要做的话,我觉得可以先从数据库找个名字相同,身份证长证一样的结果集,然后在程序中去比较身份证号码。
判断字符串的相似度,需要用到字符串相似度算法(比如 编辑距离算法)。
我觉得简单的方法是你写一个比较字符数组的方法,比较两个字符数组的相同Index的值是否相同,把只有一两个不同的放到一个集合里。
把你从数据库查到的结果集的身份证号码分割成字符数组,调用上面的方法去循环比较。
qq2013 2011-03-25
  • 打赏
  • 举报
回复
现在做了一个报名系统,为了防止别人重复报名,就做了相同的身份证号不能报名,可是有的人就把身份证号的一两位修改了,这样就报名进去了.现在主要是想很快把像这样的人找出来,就是姓名相同,身份证号只一一两位不同的.
qq2013 2011-03-25
  • 打赏
  • 举报
回复
现在做了一个报名系统,为了防止别人重复报名,就做了相同的身份证号不能报名,可是有的人就把身份证号的一两位修改了,这样就报名进去了.现在主要是想很快把像这样的人找出来,就是姓名相同,身份证号只一一两位不同的.
zell419 2011-03-25
  • 打赏
  • 举报
回复
身份证号码相似 ?
这个有点难 。
学习下 。
godenvy 2011-03-25
  • 打赏
  • 举报
回复
[Quote=引用楼主 qq13237810775 的回复:]
求一个可以查询姓名相同,身份证号相似的SQL语句

如有以下表数据

FID FName FIC Fsex
1 张三 430403198801271234 男
2 张三 430403198801271235 男
3 张三 410413199801……
[/Quote]

关键要明确何谓相似,得有一个规则来规定,才能写出程序来, 要不就成了5楼那样乐,呵呵
遊戲王千金 2011-03-25
  • 打赏
  • 举报
回复
有效的身份证,可提取生日,生日相同就可能是同一个用户(楼主说姓名相同,身份证号相似,很少会出现)

------------------根据身份证计算生日函数------------------

create FUNCTION [dbo].[Birthday]
(
@IDCardNo NVARCHAR(50)
)
RETURNS DATETIME
AS
BEGIN
DECLARE @Birthday DATETIME

if (LEN(@IDCardNo)=15 or LEN(@IDCardNo)=16) and SUBSTRING(@IDCardNo,9,2) between 1 and 12 and SUBSTRING(@IDCardNo,11,2) between 1 and 31
SET @Birthday= CONVERT(VARCHAR(10),'19'+SUBSTRING(@IDCardNo,7,2)+'-'+SUBSTRING(@IDCardNo,9,2)+'-'+SUBSTRING(@IDCardNo,11,2),120)
else if LEN(@IDCardNo)=18 and SUBSTRING(@IDCardNo,7,2)>=19 and SUBSTRING(@IDCardNo,11,2) between 1 and 12 and SUBSTRING(@IDCardNo,13,2) between 1 and 31
SET @Birthday= CONVERT(VARCHAR(10),SUBSTRING(@IDCardNo,7,4)+'-'+SUBSTRING(@IDCardNo,11,2)+'-'+SUBSTRING(@IDCardNo,13,2),120)
else
SET @Birthday=null
RETURN(@Birthday)
END

62,233

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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