-
MS-SQL 주민번호 체크 쿼리프로그램/Mssql 2024. 1. 23. 11:49반응형
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[uf_jNo_Check](@number char(13))
RETURNS char(13)
BEGIN
--Set Nocount on
DECLARE @returnValue as char(1), @value int
SELECT @returnValue='0'
IF @number NOT LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
RETURN @returnValue
SELECT @value=0
SELECT @value=@value+substring(@number,1,1)*2
SELECT @value=@value+substring(@number,2,1)*3
SELECT @value=@value+substring(@number,3,1)*4
SELECT @value=@value+substring(@number,4,1)*5
SELECT @value=@value+substring(@number,5,1)*6
SELECT @value=@value+substring(@number,6,1)*7
SELECT @value=@value+substring(@number,7,1)*8
SELECT @value=@value+substring(@number,8,1)*9
SELECT @value=@value+substring(@number,9,1)*2
SELECT @value=@value+substring(@number,10,1)*3
SELECT @value=@value+substring(@number,11,1)*4
SELECT @value=@value+substring(@number,12,1)*5
if substring(@number,7,1) < 5
BEGIN
--내국인 체크
SELECT @value=(11-(@value%11))%10
IF (convert(char(1),@value)=substring(@number,13,1)
and isdate(convert(char(2),(((convert(int,substring(@number,7,1))+1)%10)/2+18))+substring(@number,1,6))=1
and substring(@number,7,1) in ('0','1','2','3','4','9')
and len(@number)=13)
BEGIN
SELECT @returnValue='1'
END
END
if substring(@number,7,1) > 4
BEGIN
--재외국인 체크
SELECT @value=(11-(@value%11))
if (substring(@number,8,1)*10+substring(@number,9,1))%2 <> 0
Return @returnValue+substring(@number,6,1)
if substring(@number,12,1)<>6 and substring(@number,12,1)<>7 and substring(@number,12,1)<>8 and substring(@number,12,1)<>9
Return @returnValue
if @value >= 10
select @value=@value-10
select @value=@value+2
if @value >= 10
select @value=@value-10
if convert(char(1),@value)<>substring(@number,13,1)
Return @returnValue
BEGIN
SELECT @returnValue='1'
END
END
RETURN @returnValue
--Set nocount Off
END반응형'프로그램 > Mssql' 카테고리의 다른 글
MS-SQL 테이블 용량(크기) 확인 하는 방법 (0) 2024.01.23 MS-SQL 커서 활용법 Cursor (0) 2024.01.23 MS-SQL 프로시져 내용 검색 (0) 2024.01.23 MS-SQL 배열을 이용한 프로시저 (1) 2024.01.23 MS-SQL sp_lock (0) 2024.01.23