Buen día.
Tengo el siguiente sql para calcular el dígito verificador de EAN13.
With t AS ( Select s.numero::INTEGER, ROW_NUMBER() OVER () rwn From ( Select
regexp_split_to_table('7861091605917', E'[^0-9]*') as numero) s ), vAS(
Select sum(t.numero * CASE WHEN mod(rwn, 2) = 0 THEN 3 ELSE 1 END) As total
From t Where rwn <= 12) SELECT CASE WHEN mod(v.total, 10) = 0 Then 0 ELSE 10
- Mod(v.total, 10) END AS digito_verificador From v;
Mi duda es si la función regexp_split_to_table va a respetar el orden de string
para que row_number() lo numere y no tener problemas en el calculo, que depende
de la posición de cada dígito.
Estoy por crear una función con este código, la cual va a ser llamada
esporádicamente. Saludos.Mauricio