t-sql: count occurrences of word in varchar column(t-sql:计算 varchar 列中单词的出现次数)
问题描述
我想使用 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.
这篇关于t-sql:计算 varchar 列中单词的出现次数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:t-sql:计算 varchar 列中单词的出现次数
基础教程推荐
- while 在触发器内循环以遍历 sql 中表的所有列 2022-01-01
- 如何在 CakePHP 3 中实现 INSERT ON DUPLICATE KEY UPDATE aka upsert? 2021-01-01
- CHECKSUM 和 CHECKSUM_AGG:算法是什么? 2021-01-01
- 带更新的 sqlite CTE 2022-01-01
- MySQL 5.7参照时间戳生成日期列 2022-01-01
- ORA-01830:日期格式图片在转换整个输入字符串之前结束/选择日期查询的总和 2021-01-01
- 带有WHERE子句的LAG()函数 2022-01-01
- 从字符串 TSQL 中获取数字 2021-01-01
- MySQL根据从其他列分组的值,对两列之间的值进行求和 2022-01-01
- 使用 VBS 和注册表来确定安装了哪个版本和 32 位 2021-01-01
