Ovako se racuna kontrolna cifra:
{
F-ja za izracunavanje kontrolnog broja (13. cifre) JMBG
JMBG predstavimo kao ABCDFGHAIJKLX, gde je X kontrolni broj.
CheckSum:
CS = 11-( 7*(A+G) + 6*(B+H) + 5*(C+I) + 4*(D+J) + 3*(E+K) + 2*(F+L) ) MOD 11
ako je:
CS <= 9 -> X = CS
CS > 9 -> X = 0
}
kod je preuze iz teme http://www.elitesecurity.org/t164179
Vise detalja moze se naci u temi http://www.elitesecurity.org/t43081, ako nekoga zanima.
Mi cemo uprostuiti mozgalicu. Zadata je tabela sa dvanaestocifrenim brojevima. Napisati SELECT koji ispisuje broj i pored njega kontrolnu cifru, po formuli koja je data u kodu na pocetku mozgalice. en interesuju nas ostale stvari, sta je datunm rodjenja a sta opstina u broju. Samo zelimo da za zadatih 12 cifara izracunamo trinasetu, koja je kontrolna cifra.
CREATE TABLE MaticniBrojevi
(
Broj varchar(12) NOT NULL
CHECK (Broj LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
)
INSERT INTO MaticniBrojevi (Broj) VALUES ('123456789012')
INSERT INTO MaticniBrojevi (Broj) VALUES ('223456789012')
INSERT INTO MaticniBrojevi (Broj) VALUES ('323456789012')
INSERT INTO MaticniBrojevi (Broj) VALUES ('423456789012')
INSERT INTO MaticniBrojevi (Broj) VALUES ('523456789012')
Treba da se nesto ovako (kontrolne cifre nisu tacne, samo pokazujem sta se trazi)
Broj KontrolnaCifra
------------ --------------
123456789012 2
123456789012 3
223456789012 4
323456789012 5
423456789012 6
523456789012 7
(6 row(s) affected)
Kursori su zabranjeni. Zabranjeno dodavati nove kolone u tabelu. Sve ostalo moze.
