我正在寻找SKU生成器的功能,以生成SKU基于产品名称,组合字母和5位数字唯一号码在Postgresql。
例如:
generate_sku('GREENFIELDS FULL CREAM MILK')将只返回3个首字和随机数:
GRE-FUL-CRE-987652知道吗?
发布于 2020-11-13 22:44:45
按照建议创建一个序列。因为您有一个特定的值范围,所以限制序列的范围。然后创建一个函数,它接受一个参数,名称,并返回SKU。见小提琴。
create sequence sku_seq
as integer
increment 1
start with 10000
minvalue 10000
maxvalue 99999
no cycle;
create or replace
function item_sku(item_name_in text)
returns text
language sql
immutable strict
as $$
with parm (snam) as
( select string_to_array(item_name_in, ' '))
select sku || to_char(nextval('sku_seq'),'FM99999')
from ( select case
when array_length(snam,1) > 2
then substr(snam[1],1,3) ||'_' ||
substr(snam[2],1,3) ||'_' ||
substr(snam[3],1,3) ||'_'
when array_length(snam,1) = 2
then substr(snam[1],1,3) ||'_' ||
substr(snam[2],1,3) ||'_'
else substr(snam[1],1,3) || '_'
end sku
from parm
) s ;
$$;https://stackoverflow.com/questions/64797336
复制相似问题