mysql 定义年龄属性_Mysql身份证解析省份,出生日期,年龄,性别

身份证上隐藏很多客户信息,可以得知省份,出生日期,年龄,性别,下面来进行一一解析。

现在第二代身份证都是18位,第一代身份证15位,在第六位之后加上'19'变成18位即可。

一、身份证前两位代表出生所在省份,下面是身份证号码对应省份一览表:

11北京市

12天津市

13河北省

14山西省

15内蒙古自治区

21辽宁省

22吉林省

23黑龙江省

31上海市

32江苏省

33浙江省

34安徽省

35福建省

36江西省

37山东省

41河南省

42湖北省

43湖南省

44广东省

45广西壮族自治区

46海南省

50重庆市

51四川省

52贵州省

53云南省

54西藏自治区

61陕西省

62甘肃省

63青海省

64宁夏回族自治区

65新疆维吾尔自治区

71台湾省

81香港特别行政区

82澳门特别行政区

二、身份证从第7位开始到第14位,是出生日期

SUBSTRING(card_id,7,8),从第7位开始取,取8个数

三、身份证第9位和第10位能判断年龄

首先解析出9、10位,然后用当前年份或事件发生年份减去9、10位即得年龄

四、身份证倒数第二位,即17位代表性别

奇数代表男性,偶数代表女性,可提取出17位数之后通过除以2看余数来判断,余数是1表示男性,余数是0表示女性。

下面通过代码来实现:

select card_id as '身份证',

case when length(card_id)=18 then SUBSTRING(card_id,7,8)

when length(card_id)=15 then concat(19,SUBSTRING(card_id,7,6)) end as '出生日期',

case left(card_id,2)

when '11' then '北京市'

when '12' then '天津市'

when '13' then '河北省'

when '14' then '山西省'

when '15' then '内蒙古自治区'

when '21' then '辽宁省'

when '22' then '吉林省'

when '23' then '黑龙江省'

when '31' then '上海市'

when '32' then '江苏省'

when '33' then '浙江省'

when '34' then '安徽省'

when '35' then '福建省'

when '36' then '江西省'

when '37' then '山东省'

when '41' then '河南省'

when '42' then '湖北省'

when '43' then '湖南省'

when '44' then '广东省'

when '45' then '广西壮族自治区'

when '46' then '海南省'

when '50' then '重庆市'

when '51' then '四川省'

when '52' then '贵州省'

when '53' then '云南省'

when '54' then '西藏自治区'

when '61' then '陕西省'

when '62' then '甘肃省'

when '63' then '青海省'

when '64' then '宁夏回族自治区'

when '65' then '新疆维吾尔自治区'

when '71' then '台湾省'

when '81' then '香港特别行政区'

when '82' then '澳门特别行政区'

else '未知'

end as 省份 ,

year(curdate())-if(length(card_id)=18,substring(card_id,7,4),if(length(card_id)=15,concat('19',substring(card_id,7,2)),null)) as 年龄,

case if(length(card_id)=18, cast(substring(card_id,17,1) as UNSIGNED)%2, if(length(card_id)=15,cast(substring(card_id,15,1) as UNSIGNED)%2,3))

when 1 then '男'

when 0 then '女'

else '未知'

end as 性别

FROM bills

WHERE bills.jc_rq>'2020-01-01'

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值