Ce script SQL permet de vérifier la validité d'un code-barres EAN13 (ou d'une autre longueur, par exemple EAN8).
declare @ean char(13)
set @ean = '9782354857974'
select case when ISNUMERIC(@ean) = 1 and dbo.XEANCHECK(left(@ean, len(rtrim(@ean)) - 1)) = @ean then cast(1 as bit) else cast(0 as bit) end
La fonction scalaire dbo.XEANCHECK calcule le check digit d'un code EAN. En conséquence, en retirant le dernier caractère du code-barres et ensuite en comparant le code-barres initial au code-barres sans son check digit, concaténé avec le check digit calculé, on obtient une validation du code-barres.
Dans un filtre sur le signalétique des articles, ce procédé peut être utilisé comme suit :
(s_cle1 <> '') and ((ISNUMERIC(s_cle1) = 0) or (dbo.XEANCHECK(left(s_cle1, len(rtrim(s_cle1)) - 1)) <> s_cle1))
Il permet de lister les articles dont le clé 1, non vide, contiendrait un code-barres qui n'est pas un EAN valide.
💡EAN13 est une forme de GTIN, couramment utilisée en Europe.
🔒 Le code source de la fonction dbo.XEANCHECK n'est pas public. Il est crypté dans la base de données SQL.