@Alex: nu te supăra dar am impresia că eşti masochist.
Transformarea caracterelor în coduri se poate realiza folosind o funcţia (de exemplu):
CREATE FUNCTION Caracter2Cod( @c CHAR(1) )
RETURNS TINYINT
AS
BEGIN
DECLARE @t TABLE (Caracter CHAR(1), Cod TINYINT)
INSERT INTO @t VALUES ('A',10)
INSERT INTO @t VALUES ('B',11)
INSERT INTO @t VALUES ('C',12)
...
...
...
RETURN (SELECT Cod FROM @t WHERE Caracter = @c)
ENDApel:
SELECT dbo.Caracter2Cod( 'B' )Poţi simplifica implementarea funcţiei Caracter2Cod plecând de la codul ASCII al caracterului.
Pentru a calcula modulo folosind numere mari ai expuse aici
două metode (atenţie la
teste).
Exemplu: foloseşti formulele
n * m mod p = ((n mod p) * (m mod p)) mod p
n + m mod p = ((n mod p) + (m mod p)) mod p
1010101011131007593840000272449 => 101010101113100*10^LEN('7593840000272449') + 7593840000272449
1010101011131007593840000272449 => 101010101113100*10^16 + 7593840000272449
adică
((101010101113100*10^16 mod 97) + (7593840000272449 mod 97)) mod 97Şi aici
101010101113100*10^16 mod 97 aplici
n * m mod p = ((
n mod p) * (
m mod p)) mod p
.Referitor la
IBAN