2007-04-09

TC Kimlik No Doğrulama

Geçenlerde Abdullah ÇATAKLI'nın yazmış olduğu TC Kimlik Numarasını doğrulama fonksiyonunu gördüm hoşuma gitti ve günlük sakinlerim için faydalı olsun diye günlüğüme ekliyorum.

CREATE FUNCTION dbo.Fn_TCNoDogrumu(@TcNo Bigint)
RETURNS BIT
AS
BEGIN
DECLARE @ATCNO Bigint
DECLARE @BTCNO Bigint
DECLARE @C1 Tinyint
DECLARE @C2 Tinyint
DECLARE @C3 Tinyint
DECLARE @C4 Tinyint
DECLARE @C5 Tinyint
DECLARE @C6 Tinyint
DECLARE @C7 Tinyint
DECLARE @C8 Tinyint
DECLARE @C9 Tinyint
DECLARE @Q1 Int
DECLARE @Q2 Int
DECLARE @R Bit
SET @ATCNO = @TcNo / 100
SET @BTCNO = @TcNo / 100
IF LEN(CONVERT(VARCHAR(19),@TcNo)) = 11
BEGIN
SET @C1 = @ATCNO % 10 SET @ATCNO = @ATCNO / 10
SET @C2 = @ATCNO % 10 SET @ATCNO = @ATCNO / 10
SET @C3 = @ATCNO % 10 SET @ATCNO = @ATCNO / 10
SET @C4 = @ATCNO % 10 SET @ATCNO = @ATCNO / 10
SET @C5 = @ATCNO % 10 SET @ATCNO = @ATCNO / 10
SET @C6 = @ATCNO % 10 SET @ATCNO = @ATCNO / 10
SET @C7 = @ATCNO % 10 SET @ATCNO = @ATCNO / 10
SET @C8 = @ATCNO % 10 SET @ATCNO = @ATCNO / 10
SET @C9 = @ATCNO % 10 SET @ATCNO = @ATCNO / 10
SET @Q1 = ((10-((((@C1+@C3+@C5+@C7+@C9)*3)+(@C2+@C4+@C6+@C8)) % 10))%10)
SET @Q2 = ((10-(((((@C2+@C4+@C6+@C8)+@Q1)*3)+(@C1+@C3+@C5+@C7+@C9))%10))%10)
IF (@BTCNO * 100)+(@Q1 * 10)+@Q2 = @TcNo SET @R = 1 ELSE SET @R = 0
END ELSE SET @R = 0
RETURN @R
END

1 yorum:

Adsız dedi ki...

Daha iyisi aşağıdaki linkte var;

http://www.kavramca.com/index.php?k=28

.::YASAL UYARI::.

©2004-2016 Mehmet GÜZEL, http://www.mehmetguzel.net/ & http://www.mehmetguzel.com/

Site içeriği kaynak gösterilmek koşuluyla yayınlanabilir. Yazılan yazı ve yorumlar sadece yazı ve yorum sahiplerini bağlar.