根據身份證 判斷性別

來源:互聯網
上載者:User

oracle裡面用法:

select  case mod(substr('330621198608064536', 17, 1),2)
         when 0 then
          '女'
         else
          '男'
       end from dual

select trim('先' from '唐先生') from dual 今天用了一下trim發現只去除左邊和右邊的漢字

       select ltrim('865858585','86') from dual

       select rtrim('865858585','85') from dual

 

sqlserver:

 
 
update   tbl   set   sex=CASE right(IDNum,1)%2   when   0   then   '女'   else   '男'   end   where   len(IDNum)=15
update   tbl   set   sex=CASE SubString(IDNum,17,1)%2   when   0   then   '女'   else   '男'   end   where   len(IDNum)=18

 

寫個函數處理字串:      根據社會安全號碼碼把出生年月日填充上
  create   function   getresult(@sfz   varchar(20))  
  returns   varchar(10)  
  as  
  begin  
  declare   @result   datetime,@csrq   varchar(10)  
  @csrq=(case   when   len(@sfz)=18   then   substring(@sfz,7,8)   else   '19'+substring(@sfz,7,6)   end)  
  set   @result=left(@csrq,4)+'-'+substring(@csrq,5,2)+'-'+right(@csrq,2)  
  return   @result  
  end  
   
  語句:  
  update   tablename   set   birthday=dbo.getresult(sfz)

 

 

--粗放計算,只考慮了年度,沒有考慮月份和日期
--身份證已經考慮了15位和18位的情況
--準備測試資料
declare @T table(nl int,sfz varchar(18))
insert into @T
select 0,'324532198103080654'
union all
select 0,'431324741127075'
select * from @T
--更新操作
update @T
set nl = case when len(ltrim(rtrim(sfz))) = 18 then cast(Year(GetDate()) as int)- cast(substring(ltrim(rtrim(sfz)),7,4) as int)
  else cast(Year
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.