Oracle按身份证号得到省市、性别、年龄的示例代码

 更新时间:2020年06月09日 10:17:44   作者:时光有伱记忆成花  
这篇文章主要介绍了Oracle按身份证号得到省市、性别、年龄,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

1、通过身份证号查询所在省市

SELECT
count(*) as total,
 case substr(t.CERTNO,0,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 province
 FROM uip_bjt_userinfo t 
 group by case substr(t.CERTNO,0,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 order by province desc

2、通过身份证号得到性别(第17位为奇数为男,偶数为女)

select 
  decode(mod(to_number(substr(t.useridcardnum, 17, 1)), 2),0,'女','男') as sex
 from uip_ca_userinfo t

3、通过身份证号得到年龄

select to_char(sysdate, 'yyyy') - substr(t.useridcardnum, 7, 4) as age from uip_ca_userinfo t

4、通过身份证号统计所在年龄段的人数

select count(t.id),
  case
   when to_char(sysdate, 'yyyy') - substr(t.useridcardnum, 7, 4) between 1 and 20 then
   '1-20岁'
   when to_char(sysdate, 'yyyy') - substr(t.useridcardnum, 7, 4) between 21 and 30 then
   '21-30岁'
   when to_char(sysdate, 'yyyy') - substr(t.useridcardnum, 7, 4) between 31 and 40 then
   '31-40岁'
   when to_char(sysdate, 'yyyy') - substr(t.useridcardnum, 7, 4) between 41 and 50 then
   '41-50岁'
   else
   '50岁以上'
  end as 年龄段
 from uip_ca_userinfo t
 group by case
   when to_char(sysdate, 'yyyy') - substr(t.useridcardnum, 7, 4) between 1 and 20 then
    '1-20岁'
   when to_char(sysdate, 'yyyy') - substr(t.useridcardnum, 7, 4) between 21 and 30 then
    '21-30岁'
   when to_char(sysdate, 'yyyy') - substr(t.useridcardnum, 7, 4) between 31 and 40 then
    '31-40岁'
   when to_char(sysdate, 'yyyy') - substr(t.useridcardnum, 7, 4) between 41 and 50 then
    '41-50岁'
   else
    '50岁以上'
   end
 order by 年龄段 asc

5、通过身份证号统计男女数量

select count(t.id),
  decode(mod(to_number(substr(t.useridcardnum, 17, 1)), 2),0,'女','男') as sex
 from uip_ca_userinfo t
 where to_char(sysdate, 'yyyy') - substr(t.useridcardnum, 7, 4) between 1 and 26
 group by decode(mod(to_number(substr(t.useridcardnum, 17, 1)), 2),0,'女','男')

总结

到此这篇关于Oracle按身份证号得到省市、性别、年龄的示例代码的文章就介绍到这了,更多相关oracle 身份证号得到省市 性别 年龄内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • 将Oracle数据库中的数据写入Excel

    将Oracle数据库中的数据写入Excel

    本文主要分享了将Oracle数据库中的数据写入Excel的关键代码。具有很好的参考价值,需要的朋友一起来看下吧
    2016-12-12
  • oracle初始化参数设置

    oracle初始化参数设置

    oracle初始化参数设置...
    2007-03-03
  • Oracle如何通过执行计划查看查询语句是否使用索引

    Oracle如何通过执行计划查看查询语句是否使用索引

    这篇文章主要介绍了Oracle如何通过执行计划查看查询语句是否使用索引问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • oracle定时任务定时无效的原因分析与解决

    oracle定时任务定时无效的原因分析与解决

    发现系统数据没有更新,查看oracle定时任务,估计没有执行,下面这篇文章主要给大家介绍了关于oracle定时任务定时无效的原因分析与解决方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • Oracle Job时间间隔设置

    Oracle Job时间间隔设置

    本文介绍了创建、运行、删除Job的方法,以及列举了常见的设置时间间隔执行的方法,小伙伴们可以参考一下。
    2016-05-05
  • oracle 数据库数据迁移解决方案

    oracle 数据库数据迁移解决方案

    大部分系统由于平台和版本的原因,做的是逻辑迁移,少部分做的是物理迁移,接下来把心得与大家分享一下
    2012-12-12
  • oracle表分区的概念及操作

    oracle表分区的概念及操作

    Oracle的表分区功能通过改善可管理性、性能和可用性,从而为各式应用程序带来了极大的好处。这篇文章主要介绍了oracle表分区的概念及操作,需要的朋友可以参考下
    2021-04-04
  • oracle chm帮助文件下载

    oracle chm帮助文件下载

    oracle帮助文档下载方便学习oracle的朋友门,大量的问答式解决方法
    2008-05-05
  • WINDOWS下使用DOS命令行连接oracle数据库

    WINDOWS下使用DOS命令行连接oracle数据库

    本文讲述了通过windows下的DOS命令连接oracle数据库并进行简单操作的方法
    2018-03-03
  • 详解如何删除Oracle数据库临时表空间

    详解如何删除Oracle数据库临时表空间

    因生产环境磁盘空间不足,影响了业务,短时间内无法扩容磁盘,经过排查发现,可以释放temp临时表空间来临时释放部分空间,本文记录了如何释放临时表空间的详细操作步骤,需要的朋友可以参考下
    2024-03-03

最新评论