用SQL语句求某文章中出现关键词的个数

来源:互联网 发布:模具编程入门先学什么 编辑:程序博客网 时间:2024/05/13 07:11

一、介绍

最近csdn论坛有人问我这样一个问题,说有一篇文章存在数据库中,然后有三个关键词,说是存取文章信息的时候,返回关键词的个数。故有此文。以供大家参考。

二、sql语句

DECLARE @article varchar(4000),

@keyword_One varchar(300),

@keyword_Two varchar(300),

@keyword_Three varchar(300)

--文章内容

SET @article ='2008年普通高校招生全国统一考试将于月、日举行,山东、上海、江苏、广东、海南等省市因考试科目设置不同,考试时间延长到日结束。四川省灾区的六市州个县(市、区)和甘肃省灾区的两市州的个县(市、区)延期举行高考,延期高考的时间将在正常高考结束后及时向社会公布。今年高考是在全国人民万众一心抗震救灾当中进行的,切实做好今年高考有关工作具有特殊意义。国务院领导高度重视,多次指示要求有关部门密切配合,通力合作,确保今年高考万无一失。教育部、公安部等部委和各地相关部门均采取了一系列措施,进一步加强了今年高考的各项具体工作。

 

这些措施包括一是采取严厉措施维护考风考纪,严厉打击无线设备考试作弊。为了维护良好的考风考纪和考试公正,今年各地继续组织考生签定诚信高考协议书,并开展以诚实守信为主题的教育活动,同时将加大对作弊、替考等违规行为的处罚力度:对在今年高考中有严重违规行为(如利用通讯工具作弊、替考等)的考生,将取消其当年全国统考各科成绩,同时下一年度不得报名参加全国统考;高中在校非应届毕业生参加高考,不仅取消其当年各科成绩还将给予其应届毕业当年不得报名参加全国统考的处理;在校大学生参与替考,取消其当年全国统考各科成绩,并由其所在高校按照普通高校学生管理规定严肃处理,情节严重的给予开除学籍处分;对虚报、隐瞒或伪造、涂改有关材料及其他欺诈手段,或者因招生工作人员或其他人员的徇私舞弊行为取得考试资格或录取资格的考生,取消其当年的考试资格或录取资格。

 '

SET @keyword_One ='考试'

SET @keyword_Two ='考纪'

SET @keyword_Three='考风'

--查看关键词的个数

select

( LEN( @article ) - LEN( replace( @article, @keyword_One,'' ) ) ) / LEN( @keyword_One ) AS 考试出现的次数,

( LEN( @article ) - LEN( replace( @article, @keyword_Two,'' ) ) ) / LEN( @keyword_Two ) AS 考纪出现的次数,

( LEN( @article ) - LEN( replace( @article, @keyword_Three,'' ) ) ) / LEN( @keyword_Three ) AS 考风出现的次数

 

/*结果

考试出现的次数    考纪出现的次数    考风出现的次数

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

7           2           2

*/

 

三、改写成sql函数

 

/*求第一个字符串中第二个字符串的个数*/

create FUNCTION [dbo].[m_sqlcount]

(

    @Str_One nvarchar(200),

    @Str_Two nvarchar(200)

)

RETURNS int AS

BEGIN

    DECLARE @sqlcount int

    select @sqlcount=

( LEN( @Str_One ) - LEN( replace( @Str_One, @Str_Two,'' ) ) ) / LEN( @Str_Two) 

RETURN @sqlcount

END

 

/*使用示例

SELECT dbo.[m_sqlcount]('如果这一切都是真的,我真的无法接受','')

0 0
原创粉丝点击