在线等待:怎么从SQL Server里把身份证的出生日期和性别导出来!
表名:tKHXX
身份证字段名:ZJDM
总共有近1万个身份证号码,怎么才能把它们的出身日期和性别导出来。
如果身份证是15位的例如:
350104670124004
^^^^^^ ^
350104681005003
^^^^^^ ^
就导出第7-12位之间的数字,并且在前边加上19两个数字,如果末尾是
奇数则代表男性,偶数代表女性!
身份证是18位的则:
350102197910185810
^^^^^^^^
导出第7-14位之间的数字,男女性别我不是很清楚!
求求各位帮忙,把生日导成Date字段,性别导成Sex字段,男性用M表示,
女性用F表示,在线等待,期待中!!!!
我刚学数据库,希望各位写详细一点:)
---------------------------------------------------------------
取性别:
select case convert(int,right(rtrim(身份证号),1))%2
when 0 then 'F'
else 'M' end
提醒你一句,身份证有的15位,有的18位,别弄错
---------------------------------------------------------------
先分开15、18的效率高点吧。主要是性别位置不定
15:
select brith=convert(datetime,'19'+substring(身份证号,7,6),112)
select sex=case convert(int,right(rtrim(身份证号),1))%2
when 0 then 'F'
else 'M' end
18:
select brith=convert(datetime,substring(身份证号,7,8),112)
select sex=case convert(int,substring(身份证号,17,1))%2
when 0 then 'F'
else 'M' end
---------------------------------------------------------------
在
select sex=case convert(int,substring(身份证号,17,1))%2
when 0 then 'F'
else 'M' end
后加个
from 你的表名
---------------------------------------------------------------
update tKHXX set
date=convert(datetime,'19'+substring(zjdm,7,6),112),
sex=case convert(int,right(rtrim(zjdm),1))%2
when 0 then 'F'
else 'M' end
where len(rtrim(zjdm))=15
update tKHXX set
date=convert(datetime,substring(zjdm,7,8),112),
sex=case convert(int,substring(zjdm,17,1))%2
when 0 then 'F'
else 'M' end
where len(rtrim(zjdm))=18
---------------------------------------------------------------
update tkhxx
set sex=case convert(int,substring(zjdm,17,1))%2
when 0 then 'F'
else 'M' end
等...