Dit SQL-script laat toe de geldigheid van een EAN13-barcode (of een andere lengte, zoals EAN8) te controleren.
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
De scalaire functie dbo.XEANCHECK berekent de check digit van een EAN-code. Door het laatste teken van de barcode te verwijderen en de oorspronkelijke barcode vervolgens te vergelijken met de barcode zonder check digit, aangevuld met de berekende check digit, kan men de geldigheid van de barcode bepalen.
In een filter op de artikelfiche kan deze methode als volgt worden gebruikt:
(s_cle1 <> '') and ((ISNUMERIC(s_cle1) = 0)
or (dbo.XEANCHECK(left(s_cle1, len(rtrim(s_cle1)) - 1)) <> s_cle1))
Hiermee kan men de artikelen oplijsten waarvan sleutel 1, indien niet leeg, een barcode bevat die geen geldige EAN is.
💡EAN13 is een vorm van GTIN, vaak gebruikt in Europa.
🔒 De broncode van de functie dbo.XEANCHECK is niet publiek. Ze is versleuteld in de SQL-database.