Hi~ 我是 Linmi,这里是 Notion Tips 栏目,我会每天更新一个 Notion 技巧,帮助小伙伴们更好的使用 Notion ,提高 Notion 使用效率。

本篇是 Notion Tips 的第五篇,接着上一篇《Notion Database 中如何批量修改标签?》,我们来聊聊如何通过身份证判断性别。

作为中国公民,身份证是必不可少的伴身之物,出行、办事都离不开它。我们知道通过身份证号码,是能够看出地域、出生年月日,不过除了能看出上述信息之外,身份证号码其实也能看出男女性别。

前言

HR 小姐姐会经常性的录入公司的员工资料,姓名、性别、身份证号码、手机号码、邮箱、学历等等。有些时候输入一些新同学的姓名,有时候根据姓名要盲猜一下是男是女,加上每次都要输入男女,也有些麻烦,能不能自动显示出男女呢?

思考

当然是可以的,根据中华人民共和国国家标准GB 11643-1999《公民身份号码》中规定:公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。

来自:中华人民共和国公民身份号码
  1. 地址码指的是公民常住户口所在县(市、镇、区)的行政区划代码,如110102是北京市西城区。但港澳台地区居民的身份号码只精确到省级。[1][2][3]
  2. 出生日期码表示公民出生的公历年(4位)、月(2位)、日(2位)。
  3. 顺序码是给同地址码同出生日期码的人编定的顺序号,其中奇数分配给男性,偶数分配给女性。
  4. 最后一位是校验码,这里采用的是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(),逻辑为:

  1. 如果是偶数,性别为女;
  2. 否则就是男。
((mod(toNumber(slice(prop("身份证"), 16, 17)), 2) == 0) ? "女" : "男")

这里需要注意的是,没输入的空选项也会计算,这里我们判断一下空选项。

empty(prop("身份证")) ? " " : ((mod(toNumber(slice(prop("身份证"), 16, 17)), 2) == 0) ? "女" : "男")

使用 Notion 简单的判断性别就 ✅啦!

总结

利用这个思路,我们也可以截取到出生年月,计算出生日和年龄,这个就交给小伙伴们自己动手实现吧。(注意看思考一栏。

我们下一篇见!

Notion 中文社区:加入 Notion 中文社区社群

感谢阅读,请评分鼓励一下我!

感谢评价,欢迎关注我的 Twitter 哦。