SQL 2005身份证函数包含验证和15位转18位
补充信息:
| 以下为引用的内容: USE [LzmTWWorks] GO set ANSI_NULLS ON set QUOTED_IDENTIFIER ON GO ALTER FUNCTION [Helper].[IDCard] ( @Card varchar(18) ) RETURNS @TCard TABLE ( Input varchar(18) ,IDCard varchar(18) ,Sex bit ,Birthday varchar(8) ,Region varchar(6) ,RegionName nvarchar(50) ,RegionFullName nvarchar(100) 网页教学网 ,Valid bit ) AS BEGIN DECLARE @Input varchar(18) ,@IDCard varchar(18) ,@Sex bit ,@Birthday varchar(8) ,@Region varchar(6) ,@RegionName varchar(50) ,@RegionFullName varchar(100) ,@Valid bit DECLARE 网页教学网 @Length as smallint ,@TmpCard as varchar(18) ,@IsOld as bit 网页教学网 SET @Valid = 0 IF @Card IS NULL GOTO Finish SET @Input = LTRIM(RTRIM(@Card)) /*去空格*/ 网页教学网
IF NOT @Length IN (15, 18) GOTO Finish /*非15、18位*/ IF @Length = 15 SET @Birthday = SUBSTRING(@TmpCard, 7, 8) 网页教学网
--前17位数与相应加权因子的积的和 SET @Sum = 0 WHILE @Index < 18 Webjx.Com
SELECT @WI = Webjx.Com WHEN 8 THEN 1 WHEN 9 THEN 6 WHEN 10 THEN 3 WHEN 11 THEN 7 WHEN 12 THEN 9 WHEN 13 THEN 10 WHEN 14 THEN 5 WHEN 15 THEN 8 Webjx.Com WHEN 16 THEN 4 WHEN 17 THEN 2 END SET @Sum = @Sum + @Num * @WI --模11 Webjx.Com
--校验码 Webjx.Com WHEN 10 THEN '2' END --完整的18位身份证号码 IF @IsOld = 1 --无论正确与否,都给出有效身份证号码 --取其它信息 网页教学网 SET @Region = SUBSTRING(@tmpCard, 1, 6) Webjx.Com SELECT IF @RegionName IS NULL Webjx.Com
SELECT @FirstDate = MIN(FirstDate) Webjx.Com Finish: |
网页教学网
示例: 网页教学网
| 以下为引用的内容: SELECT * FROM [LzmTWWorks].[Helper].[IDCard] ('110116200808080010') */ Webjx.Com
|






文章评论
共有 0 位网友发表了评论 查看完整内容