SqlServer2000+ 身份證合法校驗函數的示例代碼_MsSql

來源:腳本之家  責任編輯:小易  

順利安裝了sql server2000之后,我們該怎么使用它呢?通過企業管理器和事務管理器我們可以很輕松的管理一套數據庫。今天,小編就來教大家sql server2000怎么使用網頁鏈接www.anxorj.tw防采集請勿采集本網。

下面看下sqlserver2000身份證校驗的代碼,具體代碼如下所示:

SQL 2000和SQL2005區別不是太大,沒有你想的那么難學 現在SQL 2000快沒人用了,但是SQL2000的查詢分析器很強大,能連接SQL2005和SQL2008,而且它速度比較快,而且2000寫的SQL可以應用到2005上面,所以

/*身份校驗行數*/if exists(select * from sysobjects where name='fun_utils_idnumberoprater' and type='FN')drop function fun_utils_idnumberopratergocreate function fun_utils_idnumberoprater(@idnumber varchar(50)='') returns varchar(500)as/*公民身份號碼是由17位數字碼和1位校驗碼組成。排列順序從左至右分別為:6位地址碼,8位出生日期碼,3位順序碼和1位校驗碼。地址碼(身份證地址碼對照表見下面附錄)和出生日期碼很好理解,順序碼表示在同一地址碼所標識的區域范圍內,對同年同月同日出生的人編定的順序號,順序碼的奇數分配給男性,偶數分配給女性。身份證最后一位校驗碼算法如下:1. 將身份證號碼前17位數分別乘以不同的系數,從第1位到第17位的系數分別為:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 22. 將得到的17個乘積相加。3. 將相加后的和除以11并得到余數。4. 余數可能為0 1 2 3 4 5 6 7 8 9 10這些個數字,其對應的身份證最后一位校驗碼為1 0 X 9 8 7 6 5 4 3 2。function:1.校驗身份證有效性2.15位身份證轉18位*/begindeclare @ReturnText varchar(1000) --返回值,@Separator varchar(1) --分隔符,@idnumberElement varchar(1) --身份證每位元素,@CurrentIndex int --身份證號當前索引位,@NextIndex int --身份證號下一個索引位,@xsnumber varchar(50) --系數,@xsElement varchar(2) --系數每位元素,@xsCurrentIndex int --系數當前索引位,@xsNextIndex int --系數下一個索引位,@jym varchar(11) --校驗碼,@sum int --身份證元素*系數求和,@div int --合計對11求余數,@CurrentJym varchar(1) --當前校驗碼,@CurrentWs int --當前身份證位數,@NewJym varchar(1000) --新校驗碼,@NewWs int --新身份證位數,@oldId varchar(20)--處理身份證號并校驗位數有效性set @Separator =',';set @CurrentIndex = 1;set @xsnumber = '7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2';set @xsCurrentIndex = 1;set @jym = '10X98765432';set @sum = 0;set @CurrentWs = 0;set @CurrentJym = '';set @NewJym = '';set @NewWs = 0;set @CurrentWs=len(@idnumber);set @oldId = @idnumber;if @CurrentWs=15beginset @idnumber=stuff(@idnumber,7,0,case when substring(@idnumber,13,3) in ('999','998','997','996') then '18' else '19' end);SET @CurrentJym = '';endelse if @CurrentWs>=18beginset @CurrentJym=substring(@idnumber,18,1);set @idnumber=substring(@idnumber,1,17);end elsebeginset @ReturnText='校驗失敗_'goto TheEnd;endif isdate(substring(@idnumber,7,8))=0 beginset @ReturnText='校驗失敗_'goto TheEnd;end--計算身份證校驗位while(@CurrentIndex<=len(@idnumber))begin set @[email protected]+1;set @xsNextIndex=charindex(@Separator,@xsnumber,@xsCurrentIndex);if(@xsNextIndex=0 OR @xsNextIndex IS NULL)set @xsNextIndex=len(@xsnumber)+1;set @idnumberElement=substring(@idnumber,@CurrentIndex,@[email protected]);set @xsElement=substring(@xsnumber,@xsCurrentIndex,@[email protected]);if ISNUMERIC(@idnumberElement) > 0set @[email protected]+cast(@idnumberElement as int)*cast(@xsElement as int)elsebeginset @ReturnText='校驗失敗_';goto TheEndendset @[email protected]+1;set @[email protected]+1;endset @[email protected]%11;set @NewJym=substring(@jym,@div+1,1);--校驗身份證校驗位是否出錯if (@CurrentJym<>'') and (@NewJym<>@CurrentJym)beginset @ReturnText='校驗失敗_';goto TheEndend--輸出新的身份證號if len(@oldId) > 18set @ReturnText='校驗通過,原始身份證長度非15位或18位_'+(@[email protected])elseset @ReturnText='校驗通過,原始身份證長度為'+cast(len(@oldId) as varchar)+'位_'+(@[email protected])goto TheEndTheEnd:return @ReturnTextendgo-- ----------------------以下存儲過程是遍歷整個表,添加字段并修改校驗------------------------/** 一下存儲過程是在原表的基礎上,添加字段保存校驗結果,需要替換掉表明和字段名*/-- 表名:a_idcard , 列 idcard 原身份證, card 標準(新添加),result校驗結果(新添加)-- 添加標準身份證字段beginbeginif not exists (select * from syscolumns where id=object_id('a_idcard') and name='card') alter table a_idcard add [card] varchar(20);end-- 添加校驗結果字段beginif not exists (select * from syscolumns where id=object_id('a_idcard') and name='result') alter table a_idcard add [result] nvarchar(20);endendgo--遍歷結果BEGINdeclare @id_card varchar(100), @res varchar(200),@c_index intdeclare cur cursor for select idcard from a_idcard -- 這里需要替換open curfetch next from cur into @id_cardwhile @@FETCH_STATUS = 0 begin set @res = dbo.fun_utils_idnumberoprater(@id_card)set @c_index = charindex('_',@res)print substring(@res,0,@c_index)print substring(@res, @c_index+1, len(@res))-- 這里需要替換update a_idcard set card=substring(@res, @c_index+1, len(@res)),result=substring(@res,0,@c_index)where [email protected]_cardfetch next from cur into @id_cardend close curdeallocate curend go

SQL Server 2000 是Microsoft 公司推出的SQL Server 數據庫管理系統的最新版本該版本繼承了SQL Server 7.0 版本的優點同時又比它增加了許多更先進的功能具有使用方便可伸縮性好與相關軟件集成程度高等優點

PS:下面看下身份證合法性校驗模板

實現的方法和詳細的操作步驟如下: 1、第一步,打開SQL Server軟件,然后選擇圖中“數據庫”選項前面的“+”號以展開數據庫,如下圖所示,然后進入下一步。2、其次,完成知上述步驟后,使用相同

//這個可以驗證15位和18位的身份證,并且包含生日和校驗位的驗證。 //如果有興趣,還可以加上身份證所在地的驗證,就是前6位有些數字合法有些數字不合法。 function isIdCardNo(num) { if(num.indexOf("x")!=-1){ return false; } num = num.toUpperCase(); //身份證號碼為15位或者18位,15位時全為數字,18位前17位為數字,最后一位是校驗位,可能為數字或字符X。 if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) { alert('輸入的身份證號長度不對,或者號碼不符合規定!\n15位號碼應全為數字,18位號碼末位可以為數字或X。'); return false; } //校驗位按照ISO 7064:1983.MOD 11-2的規定生成,X可以認為是數字10。 //下面分別分析出生日期和校驗位 var len, re; len = num.length; if (len == 15) { re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/); var arrSplit = num.match(re); //檢查生日日期是否正確 var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]); var bGoodDay; bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4])); if (!bGoodDay) { alert('輸入的身份證號里出生日期不對!'); return false; } else { //將15位身份證轉成18位 //校驗位按照ISO 7064:1983.MOD 11-2的規定生成,X可以認為是數字10。 var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); var nTemp = 0, i; num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6); for (i = 0; i < 17; i++) { nTemp += num.substr(i, 1) * arrInt[i]; } num += arrCh[nTemp % 11]; return num; } } if (len == 18) { re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/); var arrSplit = num.match(re); //檢查生日日期是否正確 var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]); var bGoodDay; bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4])); if (!bGoodDay) { alert(dtmBirth.getYear()); alert(arrSplit[2]); alert('輸入的身份證號里出生日期不對!'); return false; } else { //檢驗18位身份證的校驗碼是否正確。 //校驗位按照ISO 7064:1983.MOD 11-2的規定生成,X可以認為是數字10。 var valnum; var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); var nTemp = 0, i; for (i = 0; i < 17; i++) { nTemp += num.substr(i, 1) * arrInt[i]; } valnum = arrCh[nTemp % 11]; if (valnum != num.substr(17, 1)) { alert('18位身份證的校驗碼不正確!應該為:' + valnum); return false; } return num; } } return false;}

SQL SERVER 2000 一直處于停止狀態原因有很多 1、SQL沒有正確安裝 2、Master數據庫損壞 3、超級用戶(Administrator)密碼修改過,會導致啟動服務時權限不夠 4、SQL補丁沒有安裝 等等啦,很多很

總結

到此這篇關于SqlServer2000+ 身份證合法校驗函數的示例代碼的文章就介紹到這了,更多相關sqlserver2000身份證校驗內容請搜索真格學網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持真格學網!

先說明一點,SQL 2000就是SQL SERVER2000。SQL SERVER2000包括有個人版,企業版,標準版和開發版;其中,只有個人版能在任何WIN平臺下運行,其他3個版本都只能在基于NT的服務器版運行,比如win

SQL Server 2000 是Microsoft(微軟)公司于2000年推出的SQL Server“數據庫管理系統”的一個版本。相關知識點延伸:1、在當前,我們所說的數據庫指的是“依一定規則、規律組織存放的電子數據集合”,以電子技術為依托,方便應用人員進行查詢、增、刪、匯總、統計的數據管理系統。2、在實際應用中,用戶往往是與前臺界面打交道,不會直接接觸到數據庫數據庫管理系統,前臺界面與數據庫數據庫管理系統聯接,其在后臺支撐起數據的查詢、交換、刪增等。3、在當前數據庫管理系統廣泛運用于行業中的進、銷、存數據管理,多用戶游戲中的人物狀態、參數設定等管理,企業、事業單位中的人事、編制管理等等…幾乎所有有大量數據的領域內容來自www.anxorj.tw請勿采集。


  • 本文相關:
  • 用sql實現18位身份證校驗代碼分享 身份證校驗位計算
  • sql server并行操作優化避免并行操作被抑制而影響sql的執行效率
  • 判斷觸發器正在處理的是插入,刪除還是更新觸發
  • 2分法分頁存儲過程腳本實例
  • sql語句中單引號嵌套問題(一定要避免直接嵌套)
  • 磁盤緩存專題之一 緩存命中和緩存未命中&緩存與緩沖間的差異
  • sql 截取字符串應用代碼
  • sqlserver 中datetime 和 smalldatetime類型分析說明
  • sql server 游標語句 聲明/打開/循環實例
  • sqlserver 支持定位當前頁,自定義排序的分頁sql(拒絕動態sql)
  • sqlserver as的用法
  • sql server 2000是什么?
  • sql server2000怎么使用
  • sql server2000到底是什么
  • sql server2000怎么使用
  • SQL Server2000好用還是SQL Server2005好用
  • SQL Server2000是什么
  • sql server 2000如何執行sql腳本?
  • 如何解決SQL SERVER 2000 一直處于停止狀態
  • sql server2000 與SQL2000區別
  • sql server2000與sql server2008哪個更好用
  • 網站首頁網頁制作腳本下載服務器操作系統網站運營平面設計媒體動畫電腦基礎硬件教程網絡安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess數據庫文摘數據庫其它首頁用sql實現18位身份證校驗代碼分享 身份證校驗位計算sql server并行操作優化避免并行操作被抑制而影響sql的執行效率判斷觸發器正在處理的是插入,刪除還是更新觸發2分法分頁存儲過程腳本實例sql語句中單引號嵌套問題(一定要避免直接嵌套)磁盤緩存專題之一 緩存命中和緩存未命中&緩存與緩沖間的差異sql 截取字符串應用代碼sqlserver 中datetime 和 smalldatetime類型分析說明sql server 游標語句 聲明/打開/循環實例sqlserver 支持定位當前頁,自定義排序的分頁sql(拒絕動態sql)sqlserver as的用法sql server 2012 安裝圖解教程(附sql server數據庫入門學習總結microsoft sql server 2012 數據sql重復記錄查詢的幾種方法win7系統安裝sqlserver2000的詳細sqlserver中distinct的用法(不重sql server錯誤代碼大全及解釋(sql-order by 多字段排序(升序、sql將一個表中的數據插入到另一個用sql語句添加刪除修改字段、一些sql不常用函數總結以及事務,增加,刪除觸sql server 中合并某個字段值的實例sql server事務語法及使用方法實例分析sqlserver 此數據庫沒有有效所有者錯誤的遠程連接局域網內的sql server 的方法sql server 2000 清理日志精品圖文教程sql server 日期函數cast 和 convert 以及sql中varchar和nvarchar的區別與使用方法sqlserver使用公用表表達式(cte)實現無c# ling to sql 取多條記錄最大時間
    免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
    Copyright © 2017 www.anxorj.tw All Rights Reserved
    陕西快乐10分下载