飘飘悠悠 发表于 2015-1-16 22:32:37

MSSQL网页设计分拆统计字符串

支持多线程,充分利用CPU资源统计|字符串
在数据库表tbl1中有一个字段Keywords,它是nvarchar范例,长度为1000,该字段的内容是所要剖析的论文的关头字idkeywords-----------------------------------------------------------1kw1;kw2;kw32kw2;kw33kw3;kw1;kw4

成绩1。关于在keywords字段中呈现的一切关头字汇合(上例中关头字汇合为{kw1,kw2,kw3,kw4})中的恣意一个关头字,要统计它呈现的次数(也就是包括该关头字的记录的条数),然后写到另外一张表中。最初的效果就是keywordscount-------------------------kw12kw22kw33kw41

成绩2。在此基本上,要举行组合查询。也就是说在全部关头字汇合中恣意抽出两个关头字,统计它们在数据库表记录中同时呈现的次数。关于上题,最初效果如果:keywordscount----------------------------------kw1;kw21kw1;kw32kw1;kw41kw2;kw32kw2;kw40kw3;kw41

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

--统计示例

--为统计处置专门做的序数表selecttop1000id=identity(int,1,1)into序数表fromsyscolumnsa,syscolumnsbaltertable序数表addconstraintpk_id_序数表primarykey(id)go

--示例数据createtabletbl1(idint,keywordsnvarchar(1000))inserttbl1select1,kw1;kw2;kw3unionallselect2,kw2;kw3unionallselect3,kw3;kw1;kw4go

--第一种统计(计数)selectkeyword=substring(a.keywords,b.id,charindex(;,a.keywords+;,b.id)-b.id),=count(distincta.id)fromtbl1a,序数表bwhereb.id<=len(a.keywords)andsubstring(;+a.keywords,b.id,1)=;groupbysubstring(a.keywords,b.id,charindex(;,a.keywords+;,b.id)-b.id)go

--第二种统计(组合统计)selectkeyword=substring(a.keywords,b.id,charindex(;,a.keywords+;,b.id)-b.id),=count(distincta.id),a.idinto#tfromtbl1a,序数表bwhereb.id<=len(a.keywords)andsubstring(;+a.keywords,b.id,1)=;groupbysubstring(a.keywords,b.id,charindex(;,a.keywords+;,b.id)-b.id),a.id

selectkeyword=a.keyword+;+b.keyword,=sum(casea.idwhenb.idthen1else0end)from#ta,#tbwherea.keyword<b.keywordgroupbya.keyword,b.keywordorderbykeyword

droptable#tgo

--删除测试情况droptabletbl1,序数表

/*--测试了局

--统计1keywordcount------------------kw12kw22kw33kw41

(所影响的行数为4行)

--统计2keywordcount----------------------------------kw1;kw21kw1;kw32kw1;kw41kw2;kw32kw2;kw40kw3;kw41

(所影响的行数为6行)--*/
两个到底是哪一个给出了MySQL这个名字至今依然是个迷,包括开发者在内也不知道。

仓酷云 发表于 2015-1-19 16:23:47

总感觉自己还是不会SQL

山那边是海 发表于 2015-1-25 21:34:47

学习SQL语言的话如果要学会去做网站就不是很难!但是要做数据库管理的话就有难度了!

不帅 发表于 2015-2-9 15:49:13

数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。

小女巫 发表于 2015-2-27 09:01:00

然后最好有实践机会,能够把实践到的和实践结合起来,其实理论思考是个非常困扰和痛苦的事情

愤怒的大鸟 发表于 2015-3-16 19:15:09

原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。

乐观 发表于 2015-3-23 00:18:12

如果我们从集合论(关系代数)的角度来看,一张数据库的表就是一组数据元的关系,而每个SQL语句会改变一种或数种关系,从而产生出新的数据元的关系(即产生新的表)。
页: [1]
查看完整版本: MSSQL网页设计分拆统计字符串