大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 数据库 -> 其他相关 -> 分拆统计字符串

分拆统计字符串

时间: 2021-08-13 作者:daque

在数据库表tbl第11中学有一个字段keywords,它是nvarchar典型,长度为1000,该字段的实质是所要领会的舆论的要害字 id                        keywords  ----------------------------------------------------------- 1                          kw1;kw2;kw3 2                          kw2;kw3 3                          kw3;kw1;kw4 题目1。 对于在keywords字段中展示的一切要害字汇合(上例中要害字汇合为{kw1,kw2,kw3,kw4})中的大肆一个要害字,要统计它展示的度数(也即是包括该要害字的记录的条数),而后写到另一张表中。结果的功效即是 keywords       count ------------------------- kw1              2 kw2              2 kw3              3 kw4              1 题目2。 在此普通上,要举行拉拢查问。也即是说在所有要害字汇合中大肆抽出两个要害字,统计它们在数据库表记录中同声展示的度数。对于上题,结果功效假如: keywords             count ---------------------------------- kw1;kw2                1 kw1;kw3                2 kw1;kw4                1 kw2;kw3                2 kw2;kw4                0 kw3;kw4                1 -------------------------------------------------------------------------------------- --统计示例 --为统计处置特意做的底数表 select top 1000 id=identity(int,1,1) into 底数表 from syscolumns a,syscolumns b alter table 底数表 add constraint pk_id_底数表 primary key(id) go --示例数据 create table tbl1(id int,keywords nvarchar(1000)) insert tbl1 select 1,’kw1;kw2;kw3’ union  all  select 2,’kw2;kw3’ union  all  select 3,’kw3;kw1;kw4’ go --第一种统计(计数) select keyword=substring(a.keywords,b.id,charindex(’;’,a.keywords+’;’,b.id)-b.id)  ,[count]=count(distinct a.id) from tbl1 a,底数表 b where b.id<=len(a.keywords)  and substring(’;’+a.keywords,b.id,1)=’;’ group by substring(a.keywords,b.id,charindex(’;’,a.keywords+’;’,b.id)-b.id) go --第二种统计(拉拢统计) select keyword=substring(a.keywords,b.id,charindex(’;’,a.keywords+’;’,b.id)-b.id)  ,[count]=count(distinct a.id),a.id into #t from tbl1 a,底数表 b where b.id<=len(a.keywords)  and substring(’;’+a.keywords,b.id,1)=’;’ group by substring(a.keywords,b.id,charindex(’;’,a.keywords+’;’,b.id)-b.id),a.id select keyword=a.keyword+’;’+b.keyword,[count]=sum(case a.id when b.id then 1 else 0 end) from #t a,#t b where a.keyword<b.keyword group by a.keyword,b.keyword order by keyword drop table #t go --简略尝试情况 drop table tbl1,底数表 /*--尝试截止 --统计1 keyword    count    ---------- -------- kw1        2 kw2        2 kw3        3 kw4        1 (所感化的行数为 4 行) --统计2 keyword                 count       ----------------------- ----------- kw1;kw2                 1 kw1;kw3                 2 kw1;kw4                 1 kw2;kw3                 2 kw2;kw4                 0 kw3;kw4                 1 (所感化的行数为 6 行) --*/

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.