2014-07-22 62 views
1

是否有一個建立的算法/庫來創建基於單詞的更短,更簡單的字符串?我需要簡化許多品牌名稱以生成我們自己的零件號,我們在倉庫中使用。品牌名稱簡化

例子:

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

那麼,有沒有一種方法來生成它們或我唯一的選擇是創建一個包含所有這些數據庫表?

我希望他們生成的另一個原因:我已經有(並且需要)一張表,其中存儲了所有品牌名稱,並且我不想存儲簡化的表格。如果沒有必要。另外,我仍然需要第一次生成它們的東西。

編輯:好的,我需要存儲它們,但生成縮寫仍然是一個問題。

+6

即使你生成的縮寫,你將如何避免衝突,不保存呢? – Henry

+0

你想要生成那些具體的,或任何縮短? –

+0

取決於使用碰撞並不總是一個問題。即時顯示某個產品類別中的縮寫產品名稱。 – EJG89

回答

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 
+0

一個好的解決方案,我只需要修改一個如果有碰撞。 – appl3r