MSSQL 用SQL語句求某文章中出現關鍵詞的個數--【葉子】
一、介紹
最近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,
/*結果
考試出現的次數考紀出現的次數考風出現的次數
----------- ----------- -----------
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]('如果這一切都是真的,我真的無法接受','真')
*/