declare @ TestData varchar(12);set @TestData = '03EA12J77';select (10 - (sum( (((N + 1) % 2) + 1) * case when substring(@ TestData, N, 1) in ('0','A','K','U') then 0 when substring(@ TestData, N, 1) in ('1','B','L','V') then 1 when substring(@ TestData, N, 1) in ('2','C','M','W') then 2 when substring(@ TestData, N, 1) in ('3','D','N','X') then 3 when substring(@ TestData, N, 1) in ('4','E','O','Y') then 4 when substring(@ TestData, N, 1) in ('5','F','B','Z') then 5 when substring(@ TestData, N, 1) in ('6','G','Q') then 6 when substring(@ TestData, N, 1) in ('7','H','R') then 7 when substring(@ TestData, N, 1) in ('8','I','S') then 8 when substring(@ TestData, N, 1) in ('9','J','T') then 9 else 0 end ) % 10)) % 10from dbo.Tallywhere N <= len(@TestData);
DECLARE @TestData VARCHAR(12), @ControlString CHAR(36) SELECT @TestData = '03EA12J78', @ControlString = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' SELECT SUM(((N+1)%2+1)*(CHARINDEX(SUBSTRING(@TestData, N, 1),@ControlString)-1))%10 FROM dbo.Tally WHERE N <= LEN(@TestData)
DECLARE @TestData VARCHAR(12), @ControlString CHAR(36) SELECT @TestData = '03EA12J78', @ControlString = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' SELECT 10-(SUM(((N+1)%2+1)*(CHARINDEX(SUBSTRING(@TestData, N, 1),@ControlString)-1))%10) FROM dbo.Tally WHERE N <= LEN(@TestData)