Sql İle Kimlik No Kontrol

Kişi kaydı bulunan bilgi sistemlerinin hemen hemen hepsinin en önemli alanı kimlik numarasıdır. Kimlik numaraları de rastgele oluşturulmuş bir sayı değil de belli bir algoritmaya göre oluşturulmuş bir numaradır.

Aşağıdaki sql fonksiyonun kullanarak sisteminize kaydedilen kayıtların uygun kayıtlar olup olmadığını sorgulayabilirsiniz. Bir fikir olarak mesela, tabloya yazılacak bir trigger ile bütün kayıtlar otomatik olarak sorgulanabilir.


CREATE FUNCTION [dbo].[KIMLIKNO_KONTROL](@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 @SONUC 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 @SONUC = 1 ELSE SET @SONUC= 0

END

ELSE SET @SONUC = 0

RETURN @SONUC

END

 

Fonksiyonun kullanımına örnekler:

Bir kaydı kontrol etmek için örnek


SELECT dbo.[KIMLIKNO_KONTROL](12345678911) AS KONTROL

 

Kayıt tablosunda kimlik numaraları hatalı olan kayıtları getirmek için de aşağıdaki gibi bir sorgulama yapılabilir.


SELECT * FROM TABLO_ADI WHERE dbo.[KIMLIKNO_KONTROL](TCNO_ALAN) = 0

Yorum Yapın

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Proudly powered by WordPress | Theme: Baskerville 2 by Anders Noren.

Up ↑

%d blogcu bunu beğendi: