orcle中有张表,性别字段,身份证号,怎么根据身份证号修改性别为男还是女的、。?身份证号有15位和18位,位数还有带X的,求高手解答啊!!!

解决方案 »

  1.   

    这个简单啊,无论多少位,是否带X,身份证号的倒数第2位为性别编号。
    如果为奇数,则为男,否则为女。实测数据:SELECT CHR(ASCII('A') + 2014 - 2010) FROM dual;
    CREATE TABLE T127
    (
        ID  VARCHAR2(18),  -- 身份证号
        Sex VARCHAR2(20)   -- 性别
    );INSERT INTO T127 VALUES('210211197604192315', NULL);
    INSERT INTO T127 VALUES('210211197604182', NULL);
    INSERT INTO T127 VALUES('21021119760419236x', NULL);
    实测结果:
      

  2.   

     decode(length(zjbh),18,mod(substr(zjbh,17,1), 2),15,mod(substr(zjbh,15,1), 2))  /*男性=1 女性=0 */