如何根据身份证号码自动计算性别,只要知道身份证第 17 位是性别位,奇数为男性,偶数为女性即可。
了解的身份证号的编写规则之后,我们就可以对有用信息进行提取了。首先我们来看下,如何从身份证号中提取出性别。
通过为身份证号码的第 17 位数字进行判定,奇数为男,偶数为女,我们得出两种实现方法。
1. 余数判定法
第一种方法是将这第 17 位数字除以 2,当余数为 1 则为男,否则为女,然后编写计算公式:
下述代码可直接复制到公式编辑器内,注意替换身份证号字段。
{"text":"IF(EQ(MOD(VALUE(MID(身份证号,17,1)),2),1),\"男\",\"女\")","marks":[{"from":{"line":0,"ch":20,"sticky":null},"to":{"line":0,"ch":26,"sticky":null},"value":"textField_ksfyitkm","invalid":false}],"isCmData":true}
IF(判断条件,结果为 true 的返回值, 结果为 false 的返回值)
MOD(number, divisor):返回两数相除的余数
MID(A,B,C):在 A 字符串中,从第 B 位开始取出 C 个字符
VALUE(text):将文本转化为数字
EQ(value1,value2)两个值相等返回 true,支持数字,日期
计算性别公式
2. IF 函数列举所有奇数情况判定
第二种方法就是将 1~10 的所有奇数项都列出来,只要身份证号第 17 位数字符合其中任何一个奇数则结果都为男,否则为女。(这种方法适用于可能性结果较少的情况,一般情况建议使用方法一)
下述代码可直接复制到公式编辑器内,注意替换身份证号字段。
{"text":"IF(OR(EQ(MID(身份证号,17,1),1),EQ(MID(身份证号,17,1),3),EQ(MID(身份证号,17,1),5),EQ(MID(身份证号,17,1),7),EQ(MID(身份证号,17,1),9)),\"男\",\"女\")","marks":[{"from":{"line":0,"ch":13,"sticky":null},"to":{"line":0,"ch":19,"sticky":null},"value":"textField_ksfyitkm","invalid":false},{"from":{"line":0,"ch":36,"sticky":null},"to":{"line":0,"ch":42,"sticky":null},"value":"textField_ksfyitkm","invalid":false},{"from":{"line":0,"ch":59,"sticky":null},"to":{"line":0,"ch":65,"sticky":null},"value":"textField_ksfyitkm","invalid":false},{"from":{"line":0,"ch":82,"sticky":null},"to":{"line":0,"ch":88,"sticky":null},"value":"textField_ksfyitkm","invalid":false},{"from":{"line":0,"ch":105,"sticky":null},"to":{"line":0,"ch":111,"sticky":null},"value":"textField_ksfyitkm","invalid":false}],"isCmData":true}
IF(判断条件,结果为 true 的返回值, 结果为 false 的返回值)
MID(A,B,C):在A字符串中,从第 B 位开始取出C个字符
OR(logical1,[logical2], …):括号里只要有 1 个逻辑式为 true,返回的结果就是 1,也就是 true
EQ(value1,value2)两个值相等返回 true,支持数字,日期
计算性别公式