oracle中如何通过身份证号码来set性别为男或者女,有高手帮忙写一个SQL语句么,谢谢了!!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle中如何通过身份证号码来set性别为男或者女,有高手帮忙写一个SQL语句么,谢谢了!!相关的知识,希望对你有一定的参考价值。
要用 update set语句来写,需要判断15位和18位的,然后还需要判断尾部是不是带X的!!
--假设表test,字段sex是性别,cert_number是身份证号码,都是varchar2类型--15位 最后一位奇数或偶数代表一个人的性别
update test t set t.sex = decode(mod(to_number(t.cert_number),2),0,'男','女')
where upper(t.cert_number) not like '%X' and length(t.cert_number) = 15;
--最后一位是X,且长度为15的,无法判断性别
update test t set t.sex = '最后一位是X,无法判断性别!'
where upper(t.cert_number) like '%X' and length(t.cert_number) = 15;
--18位 倒数第=位的奇数或偶数代表男性或女性
update test t set t.sex = decode(mod(to_number(substr(t.cert_number,17,1)),2),0,'男','女')
where length(t.cert_number) = 18; 参考技术A update table set 性别 = decode(mode(to_number(substr(身份证, decode(length(身份证), 15, 15, 18, 17), 1)), 2),1,'男',0,'女')
能看懂吗 参考技术B update tb_book set sex='男' where id=1;
update 表名 set sex='性别' where id='身份证号'
以上是关于oracle中如何通过身份证号码来set性别为男或者女,有高手帮忙写一个SQL语句么,谢谢了!!的主要内容,如果未能解决你的问题,请参考以下文章