oracle中如何通过身份证号码来set性别为男或者女,有高手帮忙写一个SQL语句么,谢谢了!!
要用updateset语句来写,需要判断15位和18位的,然后还需要判断尾部是不是带X的!!...
要用 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;
--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;
展开全部
update table set 性别 = decode(mode(to_number(substr(身份证, decode(length(身份证), 15, 15, 18, 17), 1)), 2),1,'男'态陪拿,0,'乱如女帆搭')
能看懂吗
能看懂吗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
update tb_book set sex='男' where id=1;
update 表毕迅纯名 set sex='手咐性别' where id='身份证号昌猜'
update 表毕迅纯名 set sex='手咐性别' where id='身份证号昌猜'
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询