Oracle BI列中所有单词的字数

时间:2016-03-31 16:05:22

标签: oracle oracle-bi

我是Oracle BI的用户(v.11.1.1.7.141014)。我有一个文本列“description”,并希望为该列中的所有单词创建一个包含单词count的新表。例如:

来源:

Description
___________
This is a test
Just a test

结果:

Word    Count
_____________
a       2
test    2
is      1
just    1
this    1

有可能吗?我有一个用户帐户,(没有管理功能),但我可以处理报告(表,数据透视表等),数据结构,自定义SQL查询(仅限报告和数据结构)等等......

提前致谢

1 个答案:

答案 0 :(得分:1)

将“单词”定义为一个或多个连续英文字母(大写或小写)的任何序列,并假设“this”和“This”相同,这里有一个可能的解决方案。代码的第一行以“... from a”结尾,“用你的表名替换”a“(为了我自己的测试目的,我创建了一个包含输入数据的表,我称之为a)。 / p>

with b (d, ct) as (select Description, regexp_count(Description, '[a-zA-Z]+') from a),
     h (pos)       as (select level from dual connect by level <= 100),
     prep (word)   as (select lower(regexp_substr(d, '[a-zA-Z]+', 1, pos)) from b, h where pos <= ct)
select   word, count(word) as word_count 
from     prep 
group by word
order by word_count desc, word
/

解决方案需要事先知道每个输入字符串的最大字数;我使用100,可以增加(在第二行代码中h的定义)。