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