Calculo de dígito verificador EAN13 mediante sql

From: mauricio pullabuestan <jmauriciopb(at)yahoo(dot)es>
To: Lista Postgres ES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Calculo de dígito verificador EAN13 mediante sql
Date: 2016-02-12 13:54:21
Message-ID: 1741001546.5279457.1455285261183.JavaMail.yahoo@mail.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message José Luis Tallón 2016-02-12 14:01:13 Re: Calculo de dígito verificador EAN13 mediante sql
Previous Message Alvaro Herrera 2016-02-12 12:55:47 Re: Compilar Postgresql sin OpenSSL con LibreSSL u otra similar