怎么用sql语句将字段内容拆分后统计
如何用sql语句将字段内容拆分后统计
oracle数据库,一个字段book_name,内容如下
id book_name
1 雷雨,安徒生童话,家
2 家
3 春;
4 家;春;秋;
由于系统升级修改过,所以这个字段内容的分割有逗号和分号两种,逗号分隔的末尾无符号,分号分隔的末尾有分号。
怎样将这个字段的内容拆分成单个书名,并且统计各书名的出现次数。
------解决方案--------------------
oracle数据库,一个字段book_name,内容如下
id book_name
1 雷雨,安徒生童话,家
2 家
3 春;
4 家;春;秋;
由于系统升级修改过,所以这个字段内容的分割有逗号和分号两种,逗号分隔的末尾无符号,分号分隔的末尾有分号。
怎样将这个字段的内容拆分成单个书名,并且统计各书名的出现次数。
------解决方案--------------------
with t as
(select 1 id, 'leiyu,tonghua,jia' book_nm
from dual
union all
select 2 id, 'jia' book_nm
from dual
union all
select 3 id, 'chun;' book_nm
from dual
union all
select 4 id, 'jia;chun;qiu' book_nm
from dual)
select *
from (select id, REGEXP_SUBSTR(book_nm, '[^,]+', 1, LEVEL) STR
from (select id, replace(book_nm, ';', ',') book_nm from t) t1
connect by level <= REGEXP_COUNT(book_nm, ',') + 1
and id = prior id
and prior dbms_random.value is not null) t2