最近做的一个功能用到了用户的性别,但是之前oracle数据库中存的性别有问题,所以需要根据用户的身份证号来更正性别。
性别和身份证号倒数第二位是相关联的,倒数第二位是奇数,性别就为男,为偶数,性别为女
sql 语句 使用了 substr函数来取倒数第二位,
substr(sfzh,-2,1)
第一个参数是要取值的字符串,在这里就是用户的身份证号,第二个参数就是开始位置,负数表示倒数的位置,-2就是倒数第二个字符,最后一位是要取的字符串长度,取一位。
使用了to_number函数,从substr取出来的是字符串类型,需要转换为数字类型,然后再进行mod趋于运算来判断 奇偶数。
update users set xb = mod( to_number( substr(sfzh,-2,1) ) ,2 )
这样就把user表性别字段(xb)更新成功了. xb为1 为男生,xb为0 为女生
查询的时候可以使用case 语句来返回男女
select name,sfzh, case xb when '0' then '女' when '1' then '男' end from users