问题描述
我想使用 ContainsTable 获取嵌入在名为 description 的 t-sql nvarchar 列中的单个单词的计数.如果我提供红色"或绿色"的标准,我怎么知道哪个真正匹配?简而言之,我正在尝试进行字数统计,并且正在寻找最佳方法.
I want to use ContainsTable to get counts on individual words embedded in a t-sql nvarchar column called description. If I provide the criteria of Red Or Green, how can I tell which one actually matched off? In short, i am trying to do word counts and am looking for the best approach.
提前致谢
推荐答案
给你:
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 中可能非常昂贵.
word of caution- this kind of logic can be quite costly in t-sql.