我想使用ContainsTable来计算嵌入在名为description的t-sql nvarchar列中的单个单词的计数。如果我提供红色或绿色的标准,我怎么知道哪一个实际匹配了?简而言之,我正在尝试进行单词计数,并且正在寻找最好的方法。
提前致谢
答案 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中可能相当昂贵。