分拆统计字符串

统计|字符串

在数据库表tbl1中有一个字段Keywords,它是nvarchar类型,长度为1000,该字段的内容是所要分析的论文的关键字id                        keywords -----------------------------------------------------------1                          kw1;kw2;kw32                          kw2;kw33                          kw3;kw1;kw4

问题1。对于在keywords字段中出现的所有关键字集合(上例中关键字集合为{kw1,kw2,kw3,kw4})中的任意一个关键字,要统计它出现的次数(也就是包含该关键字的纪录的条数),然后写到另一张表中。最后的效果就是keywords       count-------------------------kw1              2kw2              2kw3              3kw4              1

问题2。在此基础上,要进行组合查询。也就是说在整个关键字集合中任意抽出两个关键字,统计它们在数据库表纪录中同时出现的次数。对于上题,最后效果要是:keywords             count----------------------------------kw1;kw2                1kw1;kw3                2kw1;kw4                1kw2;kw3                2kw2;kw4                0kw3;kw4                1

--------------------------------------------------------------------------------------

--统计示例

--为统计处理专门做的序数表select top 1000 id=identity(int,1,1) into 序数表 from syscolumns a,syscolumns balter 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,序数表 bwhere 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.idinto #tfrom tbl1 a,序数表 bwhere 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 bwhere a.keyword<b.keywordgroup by a.keyword,b.keywordorder by keyword

drop table #tgo

--删除测试环境drop table tbl1,序数表

/*--测试结果

--统计1keyword    count   ---------- --------kw1        2kw2        2kw3        3kw4        1

(所影响的行数为 4 行)

--统计2keyword                 count      ----------------------- -----------kw1;kw2                 1kw1;kw3                 2kw1;kw4                 1kw2;kw3                 2kw2;kw4                 0kw3;kw4                 1

(所影响的行数为 6 行)--*/

时间: 2025-01-02 12:41:13

分拆统计字符串的相关文章

MS SQL Server2k字符串分拆与合并处理代码

server|字符串          -- MS SQL Server2k字符串分拆与合并处理代码               --字符串分拆处理代码CREATE FUNCTION f_splitSTR(@s     varchar(8000),  --待分拆的字符串@split  varchar(10)     --数据分隔符)RETURNS TABLEAS--SELECT TOP 8000 ID=IDENTITY(int,1,1) INTO dbo.tb_splitSTR  --字符串分拆

mssql2k经典的字符串分拆自定义函数

函数|字符串 CREATE FUNCTION f_Fenstr(@s   varchar(8000),   --待分拆的字符串@split varchar(10)     --数据分隔符)RETURNS @re TABLE(col varchar(100))ASBEGIN  DECLARE @splitlen int  SET @splitlen=LEN(@split+'a')-2  WHILE CHARINDEX(@split,@s)>0  BEGIN     INSERT @re VALUE

sqlserver 字符串分拆 语句_MsSql

复制代码 代码如下: -->Title:生成測試數據 -->Author:wufeng4552 -->Date :2009-09-21 09:02:08 if object_id('f_split')is not null drop function f_split go create function f_split ( @s varchar(8000), --待分拆的字符串 @split varchar(10) --数据分隔符 )returns table as return ( s

sqlserver 字符串分拆 语句

复制代码 代码如下: -->Title:生成測試數據 -->Author:wufeng4552 -->Date :2009-09-21 09:02:08 if object_id('f_split')is not null drop function f_split go create function f_split ( @s varchar(8000), --待分拆的字符串 @split varchar(10) --数据分隔符 )returns table as return ( s

SQL Server2005数据项的分拆与合并

SQL Server2005数据项的分拆与合并: 参考示例如下: -- ============================================= -- Author: LzmTW -- create date: 20080102 -- Description: 连接子字符串 -- @TableName: 数据所在的表的名称 -- @KeyColName: 连接子字符串所依据的键值所在的列 -- @joinColName: 包含要连接的子字符串所在的列 -- @Quote: 分隔

惠普CEO为分拆PC业务作解释:无法“软硬兼施”

北京时间昨天凌晨,包括CEO李艾科(Leo Apotheker)和非执行董事长雷·兰恩(Ray Lane)在内的惠普高管分别在美国纽约.波士顿以及英国伦敦出席惠普投资者见面会,就上周公司宣布分拆PC业务的战略调整做出解释,称目前世界上只有苹果一家公司成功整合了软硬件业务,而这只是一个特例. 上周四,全球最大个人电脑厂商惠普突然宣布,"全部或部分分拆"个人电脑业务,并将放弃起步不久的平板计算机和智能手机业务.按照计划,公司将于今年10月份开始停产TouchPad平板电脑及品牌智能手机,并

android-Android我要发送超过140个字符,需要分拆发送,我需要对分拆的两条短信都进行标记

问题描述 Android我要发送超过140个字符,需要分拆发送,我需要对分拆的两条短信都进行标记 if(New_Message.length()>140){//如果超过140字符,需拆分成多条短信发送 Log.i("divide",New_Message); // String []MSG=null; // MSG[0]=New_Message.substring(0,120); // 自己拆分短信,发送时报错 // MSG[1]=New_Message.substring(12

56网:不排除从人人分拆单独上市

中介交易 SEO诊断 淘宝客 云主机 技术大厅 作为国内视频网站的主要先行者之一,56网曾经是红杉资本在国内视频行业最重要的一颗棋子,国外则是笑傲全球在线视频的YouTube.不过,在优酷2010年12月上市,尤其是土豆2011年8月上市后,56网创始人周娟认识到,资本市场留给56网的机会并不多了.而更早之前,56网的另一个竞争对手酷6网,也被盛大纳入了麾下.在此局面下,2011年9月,也就是土豆上市一个月后,56网以8000万美元的作价成为人人公司的全资子公司. 这笔8000万美元的收购是人人

56网涉足社交视频 不排除从人人分拆单独上市

中介交易 SEO诊断 淘宝客 云主机 技术大厅 作为国内视频网站的主要先行者之一,56网曾经是红杉资本在国内视频行业最重要的一颗棋子,国外则是笑傲全球在线视频的YouTube.不过,在优酷2010年12月上市,尤其是土豆2011年8月上市后,56网创始人周娟认识到,资本市场留给56网的机会并不多了.而更早之前,56网的另一个竞争对手酷6网,也被盛大纳入了麾下.在此局面下,2011年9月,也就是土豆上市一个月后,56网以8000万美元的作价成为人人公司的全资子公司. 这笔8000万美元的收购是人人