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

来源:脚本之家  责任编辑:小易  

CREATE OR REPLACE TRIGGER trig_Gz02_Sfzhbefore update of 身份证号7a686964616fe59b9ee7ad9431333332633663 ON Gz02for each rowBEGINif len(:new.身份证号)=15 and(:new.身份证号)<>:old.身份证号 thennew.出生日期:=to_date('19'|substr(:new.身份证号,7,2)|'-'|substr(:new.身份证号,9,2)|'-'|substr(身份证号,11,2),'yyyy-mm-dd');elsif len(:new.身份证号)=18 and(:new.身份证号<>:old.身份证号)thennew.出生日期:=to_date(substr(:new.身份证号,7,4)|'-'|substr(:new.身份证号,11,2)|'-'|substr(:new.身份证号,13,2),'yyyy-mm-dd');end if;END;改成before触发器,不要用after,因为触发器在触发语句中不能更新本表,你那样肯定报错www.zgxue.com防采集请勿采集本网。

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

-假设表test,字段sex是性别,cert_number是身份证号码,都是varchar2类型 15位 最后一位奇数或偶数代表一个人的性别 update test t set t.sex=decode(mod(to_number(t.cert_number),2),0,'男','女

SELECTcount(*) 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

虽然触发器可以实现,但是实际上不建议这些工作都由数据库来完成 应用程序处理起来更为简单。建议是前台应用直接获取身份证以后,截取生日的八位,生成出生年月,然后一起insert进数据库。

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

湖北省荆州松滋县 参考资料如下: 身份证号码位数的含意 (1)前1、2位数字表示:所在省份的代码;(2)第3、4位数字表示:所在城市的代码;(3)第5、6位数字表示:所在区县的代码;(4)第7~14

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

340打头的身份证号是安徽省。代表省份的是前2位。全国各省市行政区划代码: 11 北京市;12 天津市;13 河北省;14 山西省;15 内蒙古自治区;21 辽宁省;22 吉林省;23 黑龙江省;31 上海市;32

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 身份证号得到省市 性别 年龄内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

ts.syqr_dm like'_';语句可以写成:length(ts.syqr_dm)=15;内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • oracle不同数据库间对比分析脚本
  • oracle报存储过程中调用dblink同义词出现错误:pls-00201: 必须声
  • oracle database 10g数据库安装及配置教程
  • oracle 8i在p4上的安装
  • oracle分区索引的失效和重建代码示例
  • oracle数据库逐步解决ora-12541、ora-01034和ora-27101、ora-001
  • oracle 分页 很棒的sql语句
  • oracle基础:通过sqlplus执行sql语句后的结果进行判断
  • sqlplus登录\连接命令、sqlplus命令的使用大全
  • oracle数据库导入导出命令解析
  • Oracle中如何通过确定身份证长度为15位获得信息呢?sql语句怎么写啊?
  • oracle中的触发器,帮忙看看有什么地方不对,通过校验身份证号,当身份证号发生变化时,出生日期同样变化
  • 身份证号232302开头的是哪个省市的
  • 怎样在excel中把身份证地址里的省市提取出来
  • oracle中如何通过身份证号码来set性别为男或者女,有高手帮忙写一个SQL语句么,谢谢了!!
  • oracle数据库:表U有字段A(身份证号码),B(出生年月日)用户导入,或者插入A,怎么让数据库自动生成B
  • 422422开头身份证号是那个省市的?
  • 340打头的身份证号是哪个省市
  • 身份证号码打头是431的是那个省市的?
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页oracle不同数据库间对比分析脚本oracle报存储过程中调用dblink同义词出现错误:pls-00201: 必须声oracle database 10g数据库安装及配置教程oracle 8i在p4上的安装oracle分区索引的失效和重建代码示例oracle数据库逐步解决ora-12541、ora-01034和ora-27101、ora-001oracle 分页 很棒的sql语句oracle基础:通过sqlplus执行sql语句后的结果进行判断sqlplus登录\连接命令、sqlplus命令的使用大全oracle数据库导入导出命令解析oracle 查看表空间的大小及使用情linux系统(x64)安装oracle11g完oracle数据库下载及安装图文操作oracle存储过程基本语法介绍oracle 10g 安装教程[图文]oracle 如何查询被锁定表及如何解基于ora-12170 tns 连接超时解决oracle数据库tns配置方法详解oracle中to_date详细用法示例(ororacle 创建表空间详细介绍winserver 2012r2 安装oracle及创建表流程自动备份oracle数据库oracle database link(dblink)创建与删除win7 64位操作系统中oracle 11g + plsql安oracle数据匹配merge into的实例详解oracle11g数据库win8.1系统安装配置图文教oracle sid存在解決方法oracle自动备份脚本oracle数据库 dgbroker三种保护模式的切换win10 oracle11g彻底删除并重装教程
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved