SQL2005EXPRESS查询关键字出现次数的代码(比常规方法快5倍) [ZT]
通常我们要解决查询次数的方法是这样的,在有空格或者其他分割符号的地方分割短语,然后逐个单词地进行比较。但是这样的速度是非常慢的,现在有一种方法比这种方法快5倍!
那就是REPLACE!
SQL Server提供了REPLACE函数,它可以用一个子串去替换所有指定字符串中出现的另外一个字符串,由于REPLACE是内部函数,因此运行速度非常快!!
具体过程:
I LOVE YOU,BUT YOU DONG'T LOVE ME. 如果我们要查找LOVE这个单词出现的次数,我们就用REPLACE函数,用LOVEX替换掉LOVE,这样,原始语句变为I LOVEX YOU,BUT YOU DONG'T LOVEX ME.然后大家都想到了,对了,用LEN(),把后面的字符数量减去前面的,怎么样2,很好,就是我们需要的次数。
OK 看一下代码:
建立一个新的字符串,是你需要查询的关键字后面+一个X
DECLARE @BIGGERWORD VARCHAR(21)
SELECT @BIGGERWORD=@WORD+'X'
建立一个新的字符串,内容是旧的内容用第一个字符串替换掉原来的关键字之后的字符
DECLARE @BIGGERPHRASE VARCHAR(2000)
SELECT @BIGGERPHRASE=REPLACE(@PHRASE,@WORD,@GIGGERWORD)
返回一个值,新字符串长度-原来字符串长度,即查询关键字所出现的次数
RETURN LEN(BIGGERPHRASE)-LEN(@PHRASE)
那就是REPLACE!
SQL Server提供了REPLACE函数,它可以用一个子串去替换所有指定字符串中出现的另外一个字符串,由于REPLACE是内部函数,因此运行速度非常快!!
具体过程:
I LOVE YOU,BUT YOU DONG'T LOVE ME. 如果我们要查找LOVE这个单词出现的次数,我们就用REPLACE函数,用LOVEX替换掉LOVE,这样,原始语句变为I LOVEX YOU,BUT YOU DONG'T LOVEX ME.然后大家都想到了,对了,用LEN(),把后面的字符数量减去前面的,怎么样2,很好,就是我们需要的次数。
OK 看一下代码:
建立一个新的字符串,是你需要查询的关键字后面+一个X
DECLARE @BIGGERWORD VARCHAR(21)
SELECT @BIGGERWORD=@WORD+'X'
建立一个新的字符串,内容是旧的内容用第一个字符串替换掉原来的关键字之后的字符
DECLARE @BIGGERPHRASE VARCHAR(2000)
SELECT @BIGGERPHRASE=REPLACE(@PHRASE,@WORD,@GIGGERWORD)
返回一个值,新字符串长度-原来字符串长度,即查询关键字所出现的次数
RETURN LEN(BIGGERPHRASE)-LEN(@PHRASE)