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来看,以"中国人"来做基准,也分不出来东西有多精准,就是一定会有"中国人"在字串中而已!!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)