İçeriğe geç

SQL ile TC Kimlik Numarası doğrulama algoritması

Güncelleme: 7.568 defa okundu

Konu: SQL Fonksiyonları

T.C. Kimlik numarasının 10. ve 11. haneleri, numaranın doğruluğunu kontrol etmek amacıyla kullanılır. Belirli matematiksel kurallar ve bir algoritma yardımıyla, bir T.C. Kimlik numarasının doğrulama kriterlerini sağlayıp sağlamadığını kontrol edebiliriz.

Bu kontrolü veri tabanı seviyesinde gerçekleştirmek için aşağıdaki SQL fonksiyonunu kullanabiliriz.

SQL
  1. CREATE FUNCTION [dbo].[KIMLIKNO_KONTROL](@TcNo Bigint)
  2. RETURNS BIT
  3. AS
  4. BEGIN
  5. DECLARE @ATCNO Bigint
  6. DECLARE @BTCNO Bigint
  7. DECLARE @C1 Tinyint
  8. DECLARE @C2 Tinyint
  9. DECLARE @C3 Tinyint
  10. DECLARE @C4 Tinyint
  11. DECLARE @C5 Tinyint
  12. DECLARE @C6 Tinyint
  13. DECLARE @C7 Tinyint
  14. DECLARE @C8 Tinyint
  15. DECLARE @C9 Tinyint
  16. DECLARE @Q1 Int
  17. DECLARE @Q2 Int
  18. DECLARE @SONUC Bit
  19. SET @ATCNO = @TcNo / 100
  20. SET @BTCNO = @TcNo / 100
  21. IF LEN(CONVERT(VARCHAR(19),@TcNo)) = 11
  22. BEGIN
  23. SET @C1 = @ATCNO % 10 SET @ATCNO = @ATCNO / 10
  24. SET @C2 = @ATCNO % 10 SET @ATCNO = @ATCNO / 10
  25. SET @C3 = @ATCNO % 10 SET @ATCNO = @ATCNO / 10
  26. SET @C4 = @ATCNO % 10 SET @ATCNO = @ATCNO / 10
  27. SET @C5 = @ATCNO % 10 SET @ATCNO = @ATCNO / 10
  28. SET @C6 = @ATCNO % 10 SET @ATCNO = @ATCNO / 10
  29. SET @C7 = @ATCNO % 10 SET @ATCNO = @ATCNO / 10
  30. SET @C8 = @ATCNO % 10 SET @ATCNO = @ATCNO / 10
  31. SET @C9 = @ATCNO % 10 SET @ATCNO = @ATCNO / 10
  32. SET @Q1 = ((10-((((@C1+@C3+@C5+@C7+@C9)*3)+(@C2+@C4+@C6+@C8)) % 10))%10)
  33. SET @Q2 = ((10-(((((@C2+@C4+@C6+@C8)+@Q1)*3)+(@C1+@C3+@C5+@C7+@C9))%10))%10)
  34. IF (@BTCNO * 100)+(@Q1 * 10)+@Q2 = @TcNo SET @SONUC = 1 ELSE SET @SONUC = 0
  35. END
  36. ELSE SET @SONUC = 0
  37. RETURN @SONUC
  38. END

FONKSİYONUN KULLANILIŞI :

Manuel olarak verilen Kimlik no kontrolü

SQL
  1. SELECT dbo.[KIMLIKNO_KONTROL](12345678911) AS KONTROL

Kontrol olarak adlandırdığımız alan, Doğru ise 1 Yanlış ise 0 değeri döner.

Bir tabloda olan tüm kimlik numaralarının kontrolü için

SQL
  1. SELECT dbo.[KIMLIKNO_KONTROL](TCNO_ALAN) AS KONTROL FROM TABLO_ADI

Bu yazı işinize yaradı mı?

SQL Fonksiyonları konusundaki diğer yazılar

SQL Fonksiyonları: 13 yazının tümü →

WhatsApp'ta paylaş

İlgili Yazılar