Hoş Geldin, Mühendis!

Tüm mühendislerin ve mühendis adaylarının yer aldığı forum sayfamıza kayıt olmalısınız. Kayıt olduktan sonra tüm ders notlarına, teknik dokümanlara erişim sağlayabilecek, sorularınızı sorup cevaplar verebileceksiniz. Sitemiz tamamiyle ücretsiz olmakla birlikte Mühendis Puanı sistemi uygulamaktadır.

Bilgi paylaştıkça çoğalır.

Premium Abonelik 📢

Premium abonelik ile sitemizi reklamsız gezebilir, dosyaları sınırsızca indirebilirsiniz.

Daha Fazlası

[Muhendisiz.NET] Tekrar Sizlerleyiz! 🎭

Mühendisiz.NET sitesi forum ve blog sayfası olarak tekrar yayın hayatına başladı. 🤩 Sizlerde forum sayfamıza üye olabilir ve mühendis topluluğumuza katılabilirsiniz.

Daha Fazlası

Mühendis Puanı Sistemi🏆

Bilgi paylaştıkça çoğalır felsefesini benimsemiş olmamız nedeniyle Mühendis Puanı sistemini uygulamaya aldık. Dökümanları indirebilmek için bazı paylaşımlarda bulunmalısınız. 📨

Daha Fazlası
  • Dosya indirebilmek için 2 Mühendis Puanına ihtiyacınız var. Konuya yorum atarak 1 MP Not paylaşarak 6 MP kazanırsınız.
    Bilgi Paylaştıkça Çoğalır. (Mühendislik Puanı (MP) Nedir?)
  • Mühendis Puanı kazanmaya vakti olmayanlar için ücretli premium üyelik sistemi aktif edilmiştir.
    (Premium Üyelik SATIN AL)

Kimlik Numarası Doğrulama (T-SQL)

turkmedia

Moderatör
Katılım
8 Ara 2022
Mesajlar
760
Mühendis Puanı
1,612
Kimlik numarası 11 haneli bir numaradır ve her basamağı belli bir algoritmaya göre belirleniyor. Aşağıdaki T-SQL fonksiyonu ile girilen kimlik numarasının bu algoritmaya uyup uymadığı tespit edilebilir.



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



Fonksiyonu tanımladıktan sonra aşağıdaki gibi çağrılabilir.

Manuel olarak verilen Kimlik no kontrolü
SELECT dbo.[KIMLIKNO_KONTROL](12345678911) AS KONTROL
Kontrol olarak adlandırdıgı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
SELECT dbo.[KIMLIKNO_KONTROL](TCNO_ALAN) AS KONTROL FROM TABLO_ADI
 

Son kaynaklar