比如说有两个字符串:
我是一只小花猫
我是一之小花猫这两个字符串相似度大概是92.85请问在Oracle中怎么计算呢,谢谢
我是一只小花猫
我是一之小花猫这两个字符串相似度大概是92.85请问在Oracle中怎么计算呢,谢谢
解决方案 »
- sql 语句能把数据库里的数据导成txt格式吗?
- Oracle10G中建表时使用通配符
- 求一条oracle存储过程 急!
- sql 组合问题,在线等。。。。
- 某条SQL语句造成大量IO等待,请问该如何优化?
- 我现在只知道一个类名,我想用反射得到他里面所有的set方法,怎么得到?
- 有关于oracle排序的请教
- 如何编写Oracle建库脚本?
- 看看oracle如何将这个变量添加到数据库中
- ORA-03113: 通信通道的文件结尾和alert里的 ORA-07445: 出现异常错误
- 请教:怎样增加回退段的空间
- 如果系统配置19张共享盘,来安装RAC ORACLE10g产品,RAID方案该如何安排比较合理?
我的思路是在Procedure中来实现,将其中一个字符串进行多次分解,然后与第二个字符串进行比较。思路是这样,但是算法很重要。
(
@word1 varchar(50),
@word2 varchar(50)
)
returns nvarchar(4000)
as
begin
declare @re int
declare @maxLenth int
declare @i int,@l int
declare @tb1 table(child varchar(50))
declare @tb2 table(child varchar(50))
set @i=1
set @l=2
set @maxLenth=len(@word1)
if len(@word1)<len(@word2)
begin
set @maxLenth=len(@word2)
end
while @l<=len(@word1)
begin
while @i<len(@word1)-1
begin
insert @tb1 (child) values( SUBSTRING(@word1,@i,@l) )
set @i=@i+1
end
set @i=1
set @l=@l+1
end
set @i=1
set @l=2
while @l<=len(@word2)
begin
while @i<len(@word2)-1
begin
insert @tb2 (child) values( SUBSTRING(@word2,@i,@l) )
set @i=@i+1
end
set @i=1
set @l=@l+1
end
select @re=isnull(max( len(a.child)*100/ @maxLenth ) ,0) from @tb1 a, @tb2 b where a.child=b.child
return @re
end
GO
--测试
--select dbo.get_semblance_By_2words('我是谁','我是谁啊')
--75
--相似度