1

我是 Oracle BI (v. 11.1.1.7.141014) 的用户。我有一个文本列“描述”,并想创建一个新表,其中包含该列中所有单词的字数。例如:

资源:

Description
___________
This is a test
Just a test

结果:

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

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

提前致谢

4

1 回答 1

1

将“单词”定义为一个或多个连续英文字母(大写或小写)的任意序列,并假设“this”和“This”相同,这是一种可能的解决方案。代码的第一行以“... from a)”结尾,用您的表名代替“a”(出于我自己的测试目的,我使用您的输入数据创建了一个表,并将其命名为 a)。

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)。

于 2016-03-31T17:25:19.493 回答