15位身份证根据最后一位判断:奇数为男;偶数为女。
18位身份证根据倒数第二位判断:奇数为男;偶数为女。
调用方法为:select f_get_xb(‘身份证号’) from dual;
CREATE OR REPLACE function XJFC_LT.f_get_xb(v_zjhm varchar)
return varchar
as
v_xb varchar2(10); -- 男 女 不详
begin
-- 15位身份证
if length(v_zjhm) = 15 then
if mod(to_number(substr(v_zjhm,-1)),2) = 0 then
v_xb :='女';
else
v_xb :='男';
end if;
-- 18位身份证
elsif length(v_zjhm) = 18 then
if mod(to_number(substr(v_zjhm,17,1)),2) = 0 then
v_xb := '女';
else
v_xb := '男';
end if;
ELSE v_xb :='不详';
end if;
return v_xb;
end;