Всем добрый день!
Как известно, алкокод можно вычислить из акцизки, в СМ+ наверняка подобная функция есть. Может кто уже искал и нашёл ? Или самостоятельно писал ?
select
...
lpad(conv(substr(ria.egais_barcode,4,16),36,10),19,0) as `alccode`,
...
from
...
нашлась еще
Цитата:
select sum(position_value) from
(
select power(36,position-1) * case when digit between '0' and '9'
then to_number(digit)
else 10 + ascii(digit) - ascii('A')
end
as position_value
from (
select substr(input_string,length(input_string)+1-level,1) digit,
level position
from (select '01Z' input_string from dual)
connect by level <= length(input_string)
)
)
Что то не удалось этот код использовать, взял другой из инета.
Ниже готовая функция.
SQL код:
create or replace function pdf_to_alccode( p_in in varchar2) return varchar2
is
p_str varchar2 (200) := upper (substr(p_in,4,16));
l_num number default 0;
l_hex varchar2(50) default '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
begin
if (p_str is NULL) then
return NULL;
end if;
for i in 1 .. length(p_str) loop
l_num := l_num * 36 + instr(l_hex,upper(substr(p_str,i,1)))-1;
end loop;
return lpad(l_num,19,'0');
end pdf_to_alccode;
/
commit;