How get check number for EAN-13 in Oracle


Штриховой код EAN-13 необходимо отличать от международного товарного номера EAN-13. Штриховой код EAN-13 представляет собой графическое изображение уникального международного номера товара EAN/UCC-13 в виде, пригодном для автоматического считывания. Значение номера EAN-13 продублировано арабскими цифрами в нижней части штрихового кода (13 знаков).
Номер товара EAN-13 имеет следующую структуру:
— 3 цифры – это региональный код (префикс) страны (например, 460-469 – Россия 482 — Украина, 540-549 —  Бельгия-Люксембург и т.д.);
— 6 цифр – это регистрационный номер предприятия
— 3 цифры – это порядковый номер продукции внутри предприятия;
— последняя 13-я цифра – контрольное число, вычисляется из предыдущих двенадцати.

Для расчета контрольного номера EAN-13 в Oracle можно воспользоваться следующей функцией:

CREATE OR REPLACE FUNCTION EAN13_CHECKNUMBER(STRIHCODE NUMBER)
RETURN NUMBER
IS
CHECKNUMBER NUMBER;

BEGIN

CHECKNUMBER :=
case
when mod(substr(STRIHCODE,1,1) +
substr(STRIHCODE,2,1)*3 +
substr(STRIHCODE,3,1) +
substr(STRIHCODE,4,1)*3 +
substr(STRIHCODE,5,1) +
substr(STRIHCODE,6,1)*3 +
substr(STRIHCODE,7,1) +
substr(STRIHCODE,8,1)*3 +
substr(STRIHCODE,9,1) +
substr(STRIHCODE,10,1)*3 +
substr(STRIHCODE,11,1) +
substr(STRIHCODE,12,1)*3, 10
) != 0
then concat(STRIHCODE,
(10 - mod(substr(STRIHCODE,1,1) +
substr(STRIHCODE,2,1)*3 +
substr(STRIHCODE,3,1)+
substr(STRIHCODE,4,1)*3 +
substr(STRIHCODE,5,1) +
substr(STRIHCODE,6,1)*3 +
substr(STRIHCODE,7,1) +
substr(STRIHCODE,8,1)*3 +
substr(STRIHCODE,9,1) +
substr(STRIHCODE,10,1)*3 +
substr(STRIHCODE,11,1) +
substr(STRIHCODE,12,1)*3, 10))
)
else concat(STRIHCODE,
(mod(substr(STRIHCODE,1,1) +
substr(STRIHCODE,2,1)*3 +
substr(STRIHCODE,3,1)+
substr(STRIHCODE,4,1)*3 +
substr(STRIHCODE,5,1) +
substr(STRIHCODE,6,1)*3 +
substr(STRIHCODE,7,1) +
substr(STRIHCODE,8,1)*3 +
substr(STRIHCODE,9,1) +
substr(STRIHCODE,10,1)*3 +
substr(STRIHCODE,11,1) +
substr(STRIHCODE,12,1)*3, 10))
)
END;

RETURN CHECKNUMBER;

END;
/

Давайте, получим номер EAN-13 с контрольным числом для кода 299309600001:

select EAN13_CHECKNUMBER(299309600001) EAN13 from dual;

EAN13
------------
2993096000017

В итоге получили номер EAN-13 = 2993096000017, где контрольное число = 7.

Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s