基于pb和sybase環境公民身份號碼升位方法_第1頁
基于pb和sybase環境公民身份號碼升位方法_第2頁
免費預覽已結束,剩余3頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、PBSybase(深圳:獨孤求敗 2003-05-SYBASESybase 和PB- 根據中華人民共和國國家標準 GB 11643-1999中有關公民身份號碼的規定,公民身份號碼是064:1983,MOD 11-2TSQLupdate tablename set sfzhcolumn= case convert(int,substring(sfzh,1,1)*2 % 012 then X when 3 then 456 then 6 when 7 then 8910 then SYBASECASESybase11.5Sybase- 應用系統和生產系統中身份證由于各種原因,升位可能必須考慮以下幾

2、個問題,特別是百萬級數據(1)((2) DATE(3)Serve(SybaseClien(PB15、17、18(4)在升位原數據時,根據實際情況應該先刪除有關索引或觸發器,保證升位的快速準確,升位結束后再創建- SybaseSybase /輸入參數:sfz_input /輸入參數:sfz_output create procedure p_sfzto18 sfz_input varchar(18),sfz_output varchar(18) output declare sfz_doing varchar(18), count integer,valid integerselect sfz_

3、doing = if (char_length(sfz_doing) 15) and (char_length(sfz_doing) 17) and (char_length(sfz_doing) 18)select sfz_output = sfz_input select sfz_doing = case /轉化為十七位身份證(沒有校驗位)when 15 then when 18 then substring( sfz_doing ,1,17) else sfz_doing end select count = 17,valid = 0while count 0 if ascii(subs

4、tring(sfz_doing,count,1)57 select sfz_output = sfz_input select valid = valid + convert(integer, substring(sfz_doing,count,1) * (case(19 when then when 234485 5 when 6 798 7when 9 then 3 when 10 6 when 11 then 1 when 12 then 2 when then 4 when 14 then 8 when then 5 when 16 then 10 17 then 9 when 18

5、then 7 end) select count = count - 1select sfz_output = sfz_doing + case 010 when 2 then 345675 when 8 then 9when 10 then 2 if convert(integer, substring(sfz_doing, 13, 2) 31 or convert(integer, substring(sfz_doing, 11, 2) 12 select sfz_output = sfz_input if substring(sfz_doing,11,2) = 02 if convert

6、(integer, substring(sfz_doing,13,2) 29 select sfz_output = sfz_input if 13, 2) = 29 and not ( substring(sfz_doing, 7, 4) % 4 = 0 And convert(integer,substring(sfz_doing,7,4)%100 0)Or (convert(integer,substring(sfz_doing,7,4) % 400 = 0) ) select sfz_output = sfz_input if = 31 and substring(sfz_doing,

7、11,2) not in select sfz_output = sfz_input ;PowerBuilder scriptstring ls_sfz,ls_sign=,ls_calculatesign int li_valid,li_count,li_charp,li_resultls_sfz = if len(ls_sfz)15 and len(ls_sfz)17 and len(ls_sfz)18 thenmessagebox(return end if len(ls_sfz) = 15 then end if len(ls_sfz) = 18 then ls_sign = right

8、(ls_sfz,1) ls_sfz = left(ls_sfz,17) end ifif not isdate(mid(ls_sfz,7,4)+-+mid(ls_sfz,11,2)+-+mid(ls_sfz,13,2) then end ifli_valid = for li_count = 17 to 1 step -1 if not isnumber(mid(ls_sfz, li_count,1) thenreturn 11)*integer(mid(ls_sfz,18 - li_count,1) li_charp = mod(li_valid,11) choose case li_charp

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論