数据库SQL模糊匹配查询

数据库SQL模糊匹配查询,第1张

Sql Server 环境,如果环境不对, 自己参考思路去修改吧

select * into #temp1 from table1 where len(col1) >5 and len(col2) >5

select * into #temp_end from #temp1 where 1=3

Declare @i int,@ii int

Declare @uid int,@col1 varchar(255),@col2 varchar(255)

Declare Fetch_Query_Cursor cursor for select UID,col1,col2 from #temp1

Open Fetch_Query_Cursor

Fetch Next From Fetch_Query_Cursor into @uid,@col1,@col2

while @@Fetch_status = 0

begin

select @i = 1,@ii=0

while @i<=len(@col1)

begin

if charindex(substring(@col1,@i,1),@col2) >0

select @ii = @ii+1

select @i = @i+1

end

If @ii >=5

Insert into #temp_end select * from #temp1 where Uid = @uid

Fetch Next From Fetch_Query_Cursor into @uid,@col1,@col2

end

Close Fetch_Query_Cursor

Deallocate Fetch_Query_Cursor

Select * from #temp_end

Drop table #temp1

Drop table #temp_end

like是不支持匹配程度的。

智能检查匹配或不匹配。

有个想法就是:

select * from 表 where text like '%中国%' or '%解放%'

order by replace(replace(text,'中国',''),'解放','')

这样的想法就是检查text字段包含关键字的数量,数量多的就排在前面

但是不知道有效果怎样。如果这个不行的话,我想就没什么办法在数据库里排序了。

只能在程序里做处理了吧。

模糊比对 要在资料架构下功夫,和你怎麼去分词,与比较,和怎麼去设计有关!!

如果单纯以你的SQL来看,以"中国人"来做基准,也分不出来东西有多精准,就是一定会有"中国人"在字串中而已!!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10080861.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存