SQL从表中获取身份证号码提取出生日期,性别,地区

 

前6位是省市县,中间8位是生日,倒数第二位是性别,做字符串截取操作就可以了,对应国家省市县的编码。

user region

create table IDCard(
	id int identity primary key  -- 建立一个自增列,避免数据重复
	,CardNo varchar(18) not null -- 身份证号字段,以18位身份证号为准,如有15位的,则相应调整后边的计算列内容
	,birthday as convert(date,substring(CardNo,7,8))
	,sex as (case convert(int,substring(CardNo,17,1))%2 when 0 then '女' else '男' end)
	,area as getAreaName(substring(CardNo,1,6))
)

因为你只有身份证号是录入的,其他信息都是自动获取的

那么,要么用触发器,在更新或插入了身份证号后,自动补全其他字段的数据

要么就和我这个一样,使用计算列,每次调用自动计算出相应的值

而不管是触发器也好,计算列也好,在身份证号内都只能得到行政区划编码,也就是身份证号的前6位

而且,我国的行政区划编码基本每年都有变动,所以,你还得建立一个区划编码表,把建国后的所有区划编码都录进去才能正确得到结果,然后通过自定义函数得到区划编码对应的区划名称(示例代码中的函数名是getAreaName)

用截取呀兄弟,true代表男或女,where写条件bool=true时候就是男(或女),根据身份证号分组,逐个显示

 string nian = id.Substring(6, 4);//年
 string yue = id.Substring(10, 2);//月
 string ri = id.Substring(12, 2);//日
 string day = nian + "-" + yue + "-" + ri;//拼接
 DateTime time = Convert.ToDateTime(day);//转换

我这个是vs做的,你的话用数据库新建查询-用截取-根据我截取的截

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632