Hi~ 我是 Linmi,这里是 Notion Tips 栏目,我会每天更新一个 Notion 技巧,帮助小伙伴们更好的使用 Notion ,提高 Notion 使用效率。
本篇是 Notion Tips 的第五篇,接着上一篇《Notion Database 中如何批量修改标签?》,我们来聊聊如何通过身份证判断性别。
作为中国公民,身份证是必不可少的伴身之物,出行、办事都离不开它。我们知道通过身份证号码,是能够看出地域、出生年月日,不过除了能看出上述信息之外,身份证号码其实也能看出男女性别。
前言
HR 小姐姐会经常性的录入公司的员工资料,姓名、性别、身份证号码、手机号码、邮箱、学历等等。有些时候输入一些新同学的姓名,有时候根据姓名要盲猜一下是男是女,加上每次都要输入男女,也有些麻烦,能不能自动显示出男女呢?
思考
当然是可以的,根据中华人民共和国国家标准GB 11643-1999《公民身份号码》中规定:公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。
- 地址码指的是公民常住户口所在县(市、镇、区)的行政区划代码,如110102是北京市西城区。但港澳台地区居民的身份号码只精确到省级。[1][2][3]
- 出生日期码表示公民出生的公历年(4位)、月(2位)、日(2位)。
- 顺序码是给同地址码同出生日期码的人编定的顺序号,其中奇数分配给男性,偶数分配给女性。
- 最后一位是校验码,这里采用的是ISO 7064:1983,MOD 11-2校验码系统。校验码为一位数,但如果最后采用校验码系统计算的校验码是“10”,碍于身份证号码为18位的规定,则以“X”代替校验码“10”。
这里我们先看第三条,顺序码是奇数,那么就是男生,偶数就是女生。那我们在 Notion 中截取到顺序码来判断奇偶,不就可以顺利得出男女?
但是这里我们并不需要截取全部顺序码,直接判断第十七位是否为奇偶即可得出男女。
实现
同样我们还是新建一个 Database,接着我们新建新建两个属性,分别是数字类型的「身份证号码」,formula 函数的「性别」。
我们键入身份证号码,开始写代码。这里我们使用的身份证号码为我的身份证号码再混淆后的身份证,只是演示,并非真实身份证号码。
不过这里注意的是,Notion 中的 number 属性如果数字输入过长,最后几位数字就会自动转为 00。(已经向官方反馈。
所以这里我们选择 Text 属性。
Notion 中是提供了一个字符截取的函数 Slice()
,在之前的制作进度条就是使用这个函数实现,这一次没有进度条那么复杂,我们已经知道截取多少位,直接选择即可。
slice(prop("身份证"), 16, 17)
这样我们截取到 17 位,但是并不能整除 2,因为这样截取的数字并不是 number 属性,所以我们需要做一下转换:
toNumber(slice(prop("身份证"), 16, 17))
接着我们在整除 2,通过是否整除 2 来判断是否位奇偶。注意这里需要有两个等于号。
toNumber(slice(prop("身份证"), 16, 17))/2 == 0
当然也有第二种方式,就是借用 Notion 的 mod()
函数来判断,mod 是用来计算余数,有余数说明就是奇数。
mod(toNumber(slice(prop("身份证"), 16, 17)), 2) == 0)
有了可以判断奇偶代码,我们直接请出 if()
,逻辑为:
- 如果是偶数,性别为女;
- 否则就是男。
((mod(toNumber(slice(prop("身份证"), 16, 17)), 2) == 0) ? "女" : "男")
这里需要注意的是,没输入的空选项也会计算,这里我们判断一下空选项。
empty(prop("身份证")) ? " " : ((mod(toNumber(slice(prop("身份证"), 16, 17)), 2) == 0) ? "女" : "男")
使用 Notion 简单的判断性别就 ✅啦!
总结
利用这个思路,我们也可以截取到出生年月,计算出生日和年龄,这个就交给小伙伴们自己动手实现吧。(注意看思考一栏。
我们下一篇见!
Notion 中文社区:加入 Notion 中文社区社群
那能否使用if语句,通过判断表格下同行的其他数据是否为空,来为该行增减标签呢?
(举例:以表格统计每天的学习内容,如果某一科目数据非空集,可辅助显示出今天学习了某科目)
不行。
感觉都可以提供一个js运行环境了。
刚开始学习Notion,找到一个很棒的Notion中文社区。
谢谢!