品牌名称简化

时间:2014-07-22 07:15:16

标签: string algorithm generator

是否有一个已建立的算法/库来创建基于单词的更短,更简单的字符串?我需要简化很多品牌名称来生成我们自己的部分号,我们在仓库中使用它。

示例:

AECW....A E C WHITLOCK
BATI....BENATI
BDER....BOMBARDIER
PACC....PACCAR PARTS DIV
JAGR....JAEGER
JCB.....JCB
JNDR....JOHN DEERE

那么,有没有办法生成它们,或者我唯一的选择是创建一个包含所有这些的数据库表?

我希望它们生成的另一个原因是:我已经(并且需要)一个表,其中存储了所有品牌名称,并且我不想存储简化的那些如果没有必要。此外,我仍然需要第一次生成它们的东西。

编辑:好的,我需要存储它们,但生成缩写仍然是一个问题。

1 个答案:

答案 0 :(得分:2)

要生成缩写,只需删除元音(例如PL / SQL代码):

create function abbr(s varchar2) return varchar2 as
  r varchar2(4000) := upper(s);
begin
  for i in 5..regexp_count(r, '[A-Z]') loop
    r := regexp_replace(r, '([A-Z])[AEIOU]', '\1', 1, 1);
  end loop;
  return substr(regexp_replace(r, '[^A-Z]'), 1, 4);
end;

fiddle

A E C WHITLOCK    AECW
BENATI            BNTI
BOMBARDIER        BMBR
PACCAR PARTS DIV  PCCR
JAEGER            JGER
JCB               JCB
JOHN DEERE        JHND