工作中小伙伴们可能会遇到需要从身份证号中来提取出生日期,性别等情况,例如下面这样的场景:
1.企业员工入职时,需要记录员工的姓名、身份证号码、出生日期、性别等。
2.会员信息记录时,需要记录客户的姓名、身份证号码、出生日期、性别等。
本期就为大家介绍如何巧妙运用工作流——从身份证号码中提取出生日期和性别,顺便还可以提取年龄。
第一步:创建表格
设置姓名(文本字段)、身份证号(号码字段)、出生日期(日期字段)、年龄(号码字段)、性别(选项字段),如下图:
第二步:创建触发器
先给触发器命名,方便后期的维护和调整。通常情况下,我们是在员工入职的时候的时候创建数据,但考虑到如果录入错误时可以进行修改,所以触发方式我们选择“创建数据”和“修改数据”,如下图:
第三步:配置条件
这里因为不需要其他的附加条件。所以这里直接留空,点击下一步,如下图:
第四步:选择要执行的后续操作
由于数据在创建后,会启用触发器去修改本条数据的出生日期、年龄和性别字段。所以选择修改已有数据,如下图:
第五步:编写函数赋值
因为我们要去员工表里的修改信息,所以目标表格选择员工表,在“修改哪些数据”里选择当前数据,要修改的字段选择出生日期、年龄和性别,如下图:
我把工作流的函数附在这里:
1)出生日期字段函数:MID({当前数据.身份证号}, 6, 8)
MID函数:
用法:MID(文本, 指定位置, 截取字符数)
作用:从文本指定位置之后开始,返回指定字符数的文字。
例子:MID('伙伴云', 2, 1) =云。
理解了上面的函数,我们来顺理一下思路:
MID函数是从指定的文本位置之后,返回指定字符数的文字,因为出生日期是身份证号的第7~14位,所以我们指定位置选择6,截取字符数填写8。
2)年龄字段的函数:DATEDIF(MID({当前数据.身份证号}, 6, 8), TODAY(), 'Y')。
大家对这个函数是不是不好理解,这里给大家逐一解析一下:
DATEDIF函数:
用法:DATEDIF(日期1, 日期2, ['单位'])
作用:根据指定的单位,返回日期2减去日期1的差值。当日期2小于日期1时,差值为负值。单位默认为日,可选单位:年Y、月M、日D、时H、分I、秒S。
例子:DATEDIF('2016-12-21', '2016-12-24') =3。
TODAY函数:
用法:TODAY()
作用:提取当天日期。
理解了上面的函数,我们来梳理一下思路:
DATEDIF函数返回的是日期2与日期1之间的差值,我们先用MID函数获取身份证号码中的出生日期信息,用TODAY函数获取当天日期,单位选用年 'Y'。
3)性别字段的函数:IF(MOD(VALUE(MID({当前数据.身份证号}, 16, 1)), 2) = 1, {C:员工表.性别.男}, {C:员工表.性别.女})。
大家对这个函数是不是不好理解,这里给大家逐一解析一下:
IF函数:
用法:IF(条件, 表达式1, 表达式2)
作用:如果条件为真,则执行表达式1,为假则执行表达式2。
MOD函数:
用法:MOD(数值, 除数)
作用:用数值除以除数后,返回整除后的余数。
例子:MOD(10, 3) =1
VLAUE函数:
用法:VALUE(文本)
作用:将文本转为数字。
例子:VALUE('23元') =23
理解了上面的函数,我们来梳理一下思路:
实际上身份证号码的第17位,奇数为男,偶数为女,所以我们利用MID函数,获取身份证号码的第17位,因为MID函数截取的是文本,所以我们通过VALUE函数,将MID函数截取的结果,转化为数值。然后我们利用MOD函数取余,通过判断余数是否为1,就可以判断它的奇偶性。最后我们用IF函数进行判断,如果余数为奇数,则为男,偶数则为女。
第六步:创建数据,检验触发器结果
通过上面的讲解,我们在运用工作流当中用到了MID函数、DATEDIF函数、MOD函数、VALUE函数、IF函数,从身份证号码自动提取出生日期、性别和年龄。