JMBG
DECLARE @JMBG VARCHAR(13) = '1506993501234';
SELECT
@JMBG AS JMBG,
CASE
WHEN LEN(@JMBG) <> 13 OR @JMBG LIKE '%[^0-9]%'
THEN 'Neispravan format'
ELSE
CASE
WHEN
(
CASE
WHEN 11 - (
(
7*(CAST(SUBSTRING(@JMBG,1,1) AS INT) + CAST(SUBSTRING(@JMBG,7,1) AS INT)) +
6*(CAST(SUBSTRING(@JMBG,2,1) AS INT) + CAST(SUBSTRING(@JMBG,8,1) AS INT)) +
5*(CAST(SUBSTRING(@JMBG,3,1) AS INT) + CAST(SUBSTRING(@JMBG,9,1) AS INT)) +
4*(CAST(SUBSTRING(@JMBG,4,1) AS INT) + CAST(SUBSTRING(@JMBG,10,1) AS INT)) +
3*(CAST(SUBSTRING(@JMBG,5,1) AS INT) + CAST(SUBSTRING(@JMBG,11,1) AS INT)) +
2*(CAST(SUBSTRING(@JMBG,6,1) AS INT) + CAST(SUBSTRING(@JMBG,12,1) AS INT))
) % 11
) = 11
THEN 0
WHEN 11 - (
(
7*(CAST(SUBSTRING(@JMBG,1,1) AS INT) + CAST(SUBSTRING(@JMBG,7,1) AS INT)) +
6*(CAST(SUBSTRING(@JMBG,2,1) AS INT) + CAST(SUBSTRING(@JMBG,8,1) AS INT)) +
5*(CAST(SUBSTRING(@JMBG,3,1) AS INT) + CAST(SUBSTRING(@JMBG,9,1) AS INT)) +
4*(CAST(SUBSTRING(@JMBG,4,1) AS INT) + CAST(SUBSTRING(@JMBG,10,1) AS INT)) +
3*(CAST(SUBSTRING(@JMBG,5,1) AS INT) + CAST(SUBSTRING(@JMBG,11,1) AS INT)) +
2*(CAST(SUBSTRING(@JMBG,6,1) AS INT) + CAST(SUBSTRING(@JMBG,12,1) AS INT))
) % 11
) = 10
THEN -1
ELSE 11 - (
(
7*(CAST(SUBSTRING(@JMBG,1,1) AS INT) + CAST(SUBSTRING(@JMBG,7,1) AS INT)) +
6*(CAST(SUBSTRING(@JMBG,2,1) AS INT) + CAST(SUBSTRING(@JMBG,8,1) AS INT)) +
5*(CAST(SUBSTRING(@JMBG,3,1) AS INT) + CAST(SUBSTRING(@JMBG,9,1) AS INT)) +
4*(CAST(SUBSTRING(@JMBG,4,1) AS INT) + CAST(SUBSTRING(@JMBG,10,1) AS INT)) +
3*(CAST(SUBSTRING(@JMBG,5,1) AS INT) + CAST(SUBSTRING(@JMBG,11,1) AS INT)) +
2*(CAST(SUBSTRING(@JMBG,6,1) AS INT) + CAST(SUBSTRING(@JMBG,12,1) AS INT))
) % 11
)
END
) = CAST(SUBSTRING(@JMBG,13,1) AS INT)
THEN 'ISPRAVAN'
ELSE 'NEISPRAVAN'
END
END AS Status;