SQL身份证语句问题
执行出现如下问题,我的目的是从人员信息表中的IDC看身份证号是否正确。代码如下:CREATEFUNCTIONdbo.fun_IsValidID(@IDCVarchar(1...
执行出现如下问题,我的目的是从人员信息表中的IDC看身份证号是否正确。
代码如下:
CREATE FUNCTION dbo.fun_IsValidID(@IDC Varchar(18))
-- Add the parameters for the stored procedure here
RETURNS BIT
AS
BEGIN
DECLARE @Val@IDCFactors VARCHAR(17),
@Val@IDCCodes VARCHAR(11),
@I TINYINT,
@iTemp INT
--位数不满足则为非法@IDC
IF Len(@IDC) <> 15 AND Len(@IDC) <> 18
RETURN(0);
--如果是位身份证则只验证日期和是否数字格式
IF LEN(@IDC)=15
IF ISDATE('19'+SUBSTRING(@IDC,7,6))=0 OR @IDC NOT LIKE REPLICATE('[0-9]',15)
RETURN(0);
ELSE
RETURN(1);
/*18位身份证验证日期校验位*/
--验证日期和前位是否数字格式
IF ISDATE(SUBSTRING(@IDC,7,8))=0 OR LEFT(@IDC,17) NOT LIKE REPLICATE('[0-9]',17)
RETURN(0);
--验证校验位开始
SELECT @Val@IDCFactors='79A584216379A5842',
@Val@IDCCodes='10X98765432',
@I=1,@iTemp=0
WHILE @i<18
BEGIN
SELECT
@iTemp=@iTemp+CAST(SUBSTRING(@IDC,@i,1) AS INT)*(CASE SUBSTRING(@val@IDCFactors,@i,1) WHEN 'A' THEN 10 ELSE SUBSTRING(@Val@IDCFactors,@i,1) END)
,@i=@i+1
END
IF SUBSTRING(@Val@IDCCodes,@iTemp%11+1,1)=RIGHT(@IDC,1)
RETURN(1);
ELSE
RETURN(0);
RETURN NULL;
END 展开
代码如下:
CREATE FUNCTION dbo.fun_IsValidID(@IDC Varchar(18))
-- Add the parameters for the stored procedure here
RETURNS BIT
AS
BEGIN
DECLARE @Val@IDCFactors VARCHAR(17),
@Val@IDCCodes VARCHAR(11),
@I TINYINT,
@iTemp INT
--位数不满足则为非法@IDC
IF Len(@IDC) <> 15 AND Len(@IDC) <> 18
RETURN(0);
--如果是位身份证则只验证日期和是否数字格式
IF LEN(@IDC)=15
IF ISDATE('19'+SUBSTRING(@IDC,7,6))=0 OR @IDC NOT LIKE REPLICATE('[0-9]',15)
RETURN(0);
ELSE
RETURN(1);
/*18位身份证验证日期校验位*/
--验证日期和前位是否数字格式
IF ISDATE(SUBSTRING(@IDC,7,8))=0 OR LEFT(@IDC,17) NOT LIKE REPLICATE('[0-9]',17)
RETURN(0);
--验证校验位开始
SELECT @Val@IDCFactors='79A584216379A5842',
@Val@IDCCodes='10X98765432',
@I=1,@iTemp=0
WHILE @i<18
BEGIN
SELECT
@iTemp=@iTemp+CAST(SUBSTRING(@IDC,@i,1) AS INT)*(CASE SUBSTRING(@val@IDCFactors,@i,1) WHEN 'A' THEN 10 ELSE SUBSTRING(@Val@IDCFactors,@i,1) END)
,@i=@i+1
END
IF SUBSTRING(@Val@IDCCodes,@iTemp%11+1,1)=RIGHT(@IDC,1)
RETURN(1);
ELSE
RETURN(0);
RETURN NULL;
END 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询