最新公告
  • 欢迎您光临松燕网络工作室,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • sql身份证号码验证

    正文概述 松燕网络工作室   2025-03-04   141
    USE bzb
    GO
    /****** Object:  UserDefinedFunction [dbo].[sfz]    Script Date: 2025-03-04 14:43:21 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- 检查函数是否存在,如果存在则删除
    IF OBJECT_ID('dbo.sfz', 'FN') IS NOT NULL
        DROP FUNCTION [dbo].[sfz];
    GO
    -- 创建新的函数
    CREATE FUNCTION [dbo].[sfz] ( @IDCardNo VARCHAR(50) )
    RETURNS BIT
    AS 
        BEGIN
            DECLARE @Length INT ,
                @Loop INT ,
                @Sum INT;
            DECLARE @SingleChar CHAR;
    
            SET @Sum = 0;
            IF @IDCardNo IS NULL
                OR @IDCardNo = '' 
                OR LTRIM(RTRIM(@IDCardNo)) = '' 
                BEGIN
                    RETURN 0;
                END;
    
            SET @Length = LEN(@IDCardNo);
            -- 判断位数
            IF @Length <> 18
                AND @Length <> 15 
                BEGIN
                    RETURN 0;  
                END;
            IF @Length = 18 
                BEGIN
                    IF ISNUMERIC(LEFT(@IDCardNo, 17)) = 0 
                        BEGIN  
                            RETURN 0;
                        END;
                    IF ISDATE(SUBSTRING(@IDCardNo, 7, 4) + '-'
                              + SUBSTRING(@IDCardNo, 11, 2) + '-'
                              + SUBSTRING(@IDCardNo, 13, 2)) = 0 
                        BEGIN
                            RETURN 0;
                        END;
                    SET @Loop = 17;
                    WHILE ( @Loop >= 1 ) 
                        BEGIN
                            SET @Sum = @Sum
                                + CONVERT(INT, REPLACE(SUBSTRING(@IDCardNo, @Loop,
                                                                 1), '.', ''))
                                * ( POWER(2, ( 18 - @Loop )) % 11 );
                            SET @Loop = @Loop - 1;
                        END;
                    SET @Loop = @Sum % 11;
                    IF @Loop = 0 
                        BEGIN
                            SET @SingleChar = '1';
                        END
                    ELSE 
                        IF @Loop = 1 
                            BEGIN
                                SET @SingleChar = '0';
                            END
                        ELSE 
                            IF @Loop = 2 
                                BEGIN
                                    SET @SingleChar = 'X';
                                END
                            ELSE 
                                BEGIN
                                    SET @SingleChar = CONVERT(VARCHAR(2), ( 12
                                                                  - @Loop ));
                                END;
                    IF LOWER(RIGHT(@IDCardNo, 1)) <> LOWER(@SingleChar) 
                        BEGIN
                            RETURN 0;
                        END;
                END
            ELSE 
                IF @Length = 15 
                    BEGIN
                        IF ISNUMERIC(@IDCardNo) = 0 
                            BEGIN
                                RETURN 0;
                            END;  
                        IF ISDATE('19' + SUBSTRING(@IDCardNo, 7, 2) + '-'
                                  + SUBSTRING(@IDCardNo, 9, 2) + '-'
                                  + SUBSTRING(@IDCardNo, 11, 2)) = 0 
                            BEGIN
                                RETURN 0;
                            END;
                    END;
    
            RETURN 1;
    
        END;
    GO
    SELECT *  FROM bzb.[dbo].表名  WHERE  bzb.dbo.sfz(LEFT(身份证号,18)) = 0 
     

    松燕网络工作室 » sql身份证号码验证

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    微信支付
    余额支付
    ×
    微信扫码支付 0 元