t-sql:计算varchar列中单词的出现次数

时间:2014-03-26 18:17:25

标签: sql-server tsql

我想使用ContainsTable来计算嵌入在名为description的t-sql nvarchar列中的单个单词的计数。如果我提供红色或绿色的标准,我怎么知道哪一个实际匹配了?简而言之,我正在尝试进行单词计数,并且正在寻找最好的方法。

提前致谢

1 个答案:

答案 0 :(得分:0)

你去:

drop function dbo.CountOccurrencesOfWord
go

create function dbo.CountOccurrencesOfWord(
    @text varchar(max),
    @word varchar(8000)
)
returns int
as 
begin 
    declare 
        @index int = charindex(@word, @text, 1),
        @len int = len(@word),
        @count int = 0
    while @index > 0  begin             
        set @count = @count + 1
        set @index = charindex(@word, @text, @index + @len)
    end
    return @count
end

GO

if object_id('tempdb..#example') is not null
    drop table #example
create table #example(
    description nvarchar(4000) not null
)

insert into #example select 'red yellow green red white blue red redred red green red'
insert into #example select 'red yellow green red'
insert into #example select 'orange grey green'
insert into #example select ''
insert into #example select 'magenta aqua cyan'

select dbo.CountOccurrencesOfWord(description, 'red'), description
from #example
谨慎之处 - 这种逻辑在t-sql中可能相当昂贵。