Chinaunix首页 | 论坛 | 博客
  • 博客访问: 95858
  • 博文数量: 39
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 405
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-25 09:25
文章分类

全部博文(39)

文章存档

2011年(1)

2010年(5)

2009年(4)

2008年(29)

我的朋友
最近访客

分类: WINDOWS

2008-12-04 14:56:57

在excel中根据身份证抽取客户生日
 
    数据清理过程中经常发现客户的五要素之一:生日 不准确,此时可以根据身份证抽取生日字符串在excel中进行更新。
    在excel里面输入一下代码,抽取正常18为身份证的出生日期。

=IF(LEN(N2)=18,TEXT(TEXT(MID(N2,7,6+(LEN(N2)=18)*2),"##-##-##"),"YYYY-MM-DD"),"1998-01-01")

    在excel里面构造update语句:

="update cg_insured set birth_date ='"&B1&"' where cg_id = "&D1&" and ipsn_no = "&A1&";"

    对excel里面每一行数据产生一条update

    复制update语句,保存为upd.sql 上传到服务器 执行:

isql -s dbname < upd.sql

   剩下的时间 就是等待了。不用担心锁表等问题跟update多条记录的问题

   (*^__^*) 嘻嘻……

在网上搜索了一下 发现excel有很多可以使用的公式,单从身份证可以计算出很多有用的信息.

--15位身份证跟18位身份证通用
TEXT(RIGHT(19&MID(A2,7,LEN(A2)/2-1),8),"#-##-##")
=TEXT(MOD((19&MID(A1,7,LEN(A1)/2-1)),19*10^8),"#-00-00")
--求性别
=IF(MOD(MID(A1,15,3),2),"男","女")
-- 求年龄
 =DATEDIF(出生日期,NOW(),"Y")
--校验码
 =MID("10X98765432",MOD(SUM(MID(REPLACE(A1,7,,19),ROW($1:$17),1)*2^(18-ROW($1:$17))),11)+1,1)
 

阅读(825) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~