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.anxorj.tw防采集請勿采集本網。

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.anxorj.tw請勿采集。


  • 本文相關:
  • 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.anxorj.tw All Rights Reserved
    陕西快乐10分下载