gpt4 book ai didi

sql-server - SQL - 确定列中最常出现的单词

转载 作者:行者123 更新时间:2023-12-03 03:05:54 25 4
gpt4 key购买 nike

是否有一种简单的方法可以使用 T-SQL 或 VBA 确定列/字段中最常出现的单词?

我正在为两个给定的记录集开发一个模糊匹配系统,并希望生成一个匹配字符串,其中删除最常出现的单词。由于数据来自客户关系管理数据库,因此将删除“limited”、“ltd”、“plc”和“CORPORATION”等术语。

最佳答案

为 sql-server 2005+ 编写

要分割的函数:

create function f_split
(
@a varchar(max),
@delimiter varchar(20)
)
RETURNS @t TABLE(substr varchar(200))
as
begin
set @a = @a + @delimiter
;with a as
(
select cast(1 as bigint) f1, charindex(@delimiter, @a) f2
where len(@a) > 0
union all
select f2 + (len(@delimiter)) + 1, charindex(@delimiter, @a, f2+1)
from a
where f2 > 0
)
insert @t
select substring(@a, f1, f2 - f1) from a
where f1 < f2
return
end
go

查询:

--testdata
declare @table table(name varchar(50))

insert @table values('bla bla bla ltd')
insert @table values('bla plc ltd')
insert @table values('more text CORPORATION')


declare @matchlist table(name varchar(50), replacement varchar(50))
insert @matchlist values('ltd', 'limited')
insert @matchlist values('plc', 'limited')
insert @matchlist values('CORPORATION', 'limited')

--query
select coalesce(m.replacement, a.substr) name, count(*) count from @table p
cross apply
(
select substr from
dbo.f_split(p.name, ' ')
) a
left join
@matchlist m
on a.substr = m.name
group by coalesce(m.replacement, a.substr)
order by 2 desc

结果:

name  count
---- -----
bla 4
limited 4
more 1
text 1

关于sql-server - SQL - 确定列中最常出现的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8339148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com