2013-10-04 58 views
2

我有一個要求在pl/sql中標記一個字符串並返回唯一的標記。我已經看到了會標記字符串的例子,但沒有一個會返回唯一的標記。將pl/sql中的字符串Tokenize並獲取唯一的令牌?

例如查詢 -

select tokenize('hi you person person', ' ') as col1 from dual; 

應返回TOKEN_LIST('hi','you','person')

代替TOKEN_LIST('hi','you','person','person')

回答

6
with t as (select 'aaaa bbbb cccc dddd eeee ffff aaaa' as txt from dual) 
-- end of sample data 
select DISTINCT REGEXP_SUBSTR (txt, '[^[:space:]]+', 1, level) as word 
from t 
connect by level <= length(regexp_replace(txt,'[^[:space:]]+'))+1; 

上述腳本將產生以下結果:

WORD 
dddd 
eeee 
bbbb 
ffff 
cccc 
aaaa 

OTN Community answer這個想法被無恥地偷走了。

SQL Fiddle

+0

它的工作好了很多,沒有了'DISTINCT' :) – filmor

+0

@filmor - 爲什麼? OP特別想要獨特的令牌。 –

+0

對不起,我沒有看到那部分。對於我的用例來說,順序很重要,這就是爲什麼我需要刪除'DISTINCT'。 – filmor