Le numéro SIRET intègre le mécanisme de contrôle de parité connu sous le nom
de formule (ou clé) de Luhn. Ce contrôle de parité peut être utilisé pour
réduire les risques d'erreurs de frappe ou de transmission. L'algorithme consiste à parcourir les chiffres constituant le numéro SIREN,
NIC ou SIRET, à multiplier par 2 les chiffres de rang impair et à faire ensuite
la somme de tous les chiffres obtenus. Attention, il s'agit bien de faire la somme des chiffres obtenus : si après
multiplication par 2 d'un des chiffres du numéro on obtient "12", il
faudra ajouter les chiffres 1 puis 2 et non le nombre 12 (ou Somme-9 implémenté ci-dessous). Le contrôle de parité est correct si le résultat obtenu est un multiple de
10.
Ci-dessous une fonction Sql Serveur qui implémente cet algorithme :
create function dbo.Siret_ok(@siret varchar(24))
returns bit
as
begin
declare
@Position tinyint
declare @tmp int
declare
@Cumul_Siret int
declare
@Siret_valide bit
set
@Siret_valide = 0;
set
@Cumul_Siret = 1;
If Len(@Siret)=14
begin
set @Cumul_Siret = 0;
set @position=1
while @position<=14
begin
if @position % 2 = 0
begin
set @tmp = cast(substring(@siret,@position,1) as int);
end
else
begin
set @tmp = cast(substring(@siret,@position,1) as int) * 2;
if (@tmp > 9)
begin
set @tmp = @tmp - 9;
end
end
set @Cumul_Siret =
@Cumul_Siret + @tmp;
set @position=@position+1
end
set @Siret_valide=(case when
@Cumul_Siret % 10 =
0 then 1 else 0
end);
end
return (@Siret_valide)
end
go