CREATE FUNCTION dbo.f_sexage
(
@id_card varchar(18)
) returns nchar(1)
as
begin
return(case substring(@id_card, case len(@id_card) when 15 then 15 else 17 end, 1)%2 when 1 then '男' else '女' end)
end
go--调用函数实现查询
select dbo.f_sexage(id_card), * from table1

解决方案 »

  1.   

    CREATE PROCEDURE sexage
    as
    select case substring(@id_card, 
                         case len(@id_card) 
                         when 15 then 15 
                         else 17 end, 1)%2 
           when 1 then '男' 
           else '女' end
    GO
      

  2.   

    SELECT CASE RIGHT(id_card,1)%2 WHEN 1 THEN '男' ELSE '女' END AS 性别
      

  3.   

    有必要用到存储过程吧,一句sql就行了
    同意一楼的
      

  4.   

    18位身份证号码应该是这样判断的吧
    SELECT CASE RIGHT(id_card,2)%2 WHEN 1 THEN '男' ELSE '女' END AS 性别
      

  5.   

    晕,错了
    SELECT CASE substring(id_card,17,1)%2 WHEN 1 THEN '男' ELSE '女' END AS 性别
      

  6.   

    SELECT case substring(@id_card, case len(@id_card) when 15 then 15 else 17 end, 1)%2 WHEN 1 THEN '男' ELSE '女' END AS 性别
      

  7.   

    15位的号码就是最后一个数,
    18位的就是倒数每四个数,
    如果是奇数,就是男
    如果是偶数,就是女.楼上们的都是正解啊.zjcxc(邹建)的还是很简洁的,不愧是三颗钻石的人啊...