Anasayfa / Database / 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 gümrük beyanname tescil no regex domain

create domain dmn_tescilno varchar(16) check ( value ~ '^[0-9]{8}((IM)|(EX)|(AN)|(TR)|(DG)|(T0)|(C0)|(B0)|(G0)|(M0)|(R0)|(RL))[0-9]{6}$'); select '22222222AN111111'::dmn_tescilno;  

Bir cevap yazın

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