Anasayfa / Postgresql / postgresql isvalid_tckn

postgresql isvalid_tckn

CREATE OR REPLACE FUNCTION isvalid_tckn(tckn text)
RETURNS bool
AS $$
    value = str(tckn)
    if not len(value) == 11:
    	return False

    # Sadece rakamlardan olusur.
    if not value.isdigit():
        return False

    # Ilk hanesi 0 olamaz.
    if int(value[0]) == 0:
        return False

    digits = [int(d) for d in str(value)]

    # 1. 2. 3. 4. 5. 6. 7. 8. 9. ve 10. hanelerin toplamından elde edilen sonucun
    # 10'a bölümünden kalan, yani Mod10'u bize 11. haneyi verir.
    if not sum(digits[:10]) % 10 == digits[10]:
        return False

    # 1. 3. 5. 7. ve 9. hanelerin toplamının 7 katından, 2. 4. 6. ve 8. hanelerin toplamı
    # çıkartıldığında, elde edilen sonucun 10'a bölümünden kalan, yani Mod10'u bize
    # 10. haneyi verir.
    if not (((7 * sum(digits[:9][-1::-2])) - sum(digits[:9][-2::-2])) % 10) == digits[9]:
        return False

    # Butun kontrollerden gecti.
    return True
$$ LANGUAGE 'plpython3u';

kullanım örneği:

select  random_tckn() into temp t1  FROM generate_series(1,10000) 

select random_tckn, isvalid_tckn(random_tckn)  from t1

kod için kaynak: https://muratcorlu.com/post/python-ile-tc-kimlik-numarasi-dogrulama/

Hakkında ibrahim

İlgili Makaleler

Postgresql 13 random tckn generator

Öncelikle plpython3 ‘ü yüklüyoruz sudo apt-get install postgresql-contrib postgresql-plpython3-13 CREATE OR REPLACE FUNCTION random_tckn () …

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir