当前位置:首页 » 编程语言 » sql字符串相似程度
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql字符串相似程度

发布时间: 2022-09-18 12:33:34

⑴ 在sql中两个中文字符串怎么判断相似百分比

文本比较的核心就是比较两个给定的文本之间的差异.目前,主流的比较文本之间的差异主要有两大类.一类是基于编辑距离的,例如LD算法.一类是基于最长公共子串的,例如Needleman/Wunsch算法等
LD算法又成为编辑距离算法,他是以字符串A通过插入字符、删除字符、替换字符变成另一个字符串B,那么操作的过程的次数表示两个字符串的差异
以下是SQL版本的LD算法代码
Create Function [dbo].[LD](@Str1 Varchar(8000),@Str2 Varchar(8000))
Returns Numeric(18,3)
As
Begin
Declare @I int
Declare @J int
Declare @A int
Declare @B int
Declare @C int
Declare @K int
Declare @Rst Numeric(18,3)

Declare @Matrix Table (i int,j int,val int)

Insert into @Matrix Values(0,0,0)
Set @i=1
While @i<=Len(@Str1)
Begin
insert into @Matrix Values(@i,0,@i)
Set @I=@I+1
End

Set @j=1
While @j<=Len(@Str2)
Begin
insert into @Matrix Values(0,@j,@j)
Set @j=@j+1
End

Set @i=1
While @I<=Len(@Str1)
Begin
Set @j=1
While @J<=Len(@Str2)
Begin
If (substring(@Str1, (Select Val From @Matrix Where i=0 And j=@j), 1) = substring(@Str2, (Select Val From @Matrix Where i=@I And j=0), 1))
Select @C =Val From @Matrix Where i=@i-1 And j=@j - 1
Else
Select @C =Val+1 From @Matrix Where i=@i-1 And j=@j - 1

Select @A =Val+1 From @Matrix Where i=@i - 1 And j=@j
Select @B =Val+1 From @Matrix Where i=@i And j=@j-1

If (@A <= @B and @A <= @C)
Insert Into @Matrix Values( @i,@j,@A)
If (@B <= @C and @B <= @A)
Insert Into @Matrix Values( @i,@j,@B)
If (@C <= @A and @C <= @B)
Insert Into @Matrix Values( @i,@j,@C)
Set @J=@J+1
End
Set @I=@I+1
End

If Len(@Str1) > Len(@Str2)
Set @K = Len(@Str1)
Else
Set @K = Len(@Str2)
Select @Rst=1-1.0*Max(Val)/@K From @Matrix Where i= Len(@Str1) And j= Len(@Str2)
return @Rst
End

⑵ SQL 如何比较两个字符串是否完全相等

1、新建一个文件,命名为test.php。

⑶ sql 检查 字符串 相似的记录

字符串相似度算法LD,你去研究下
http://www.cnblogs.com/grenet/archive/2010/06/01/1748448.html
看能满足你的需求不,我这SQL的自定义函数

Create Function [dbo].[LD](@Str1 Varchar(8000),@Str2 Varchar(8000))
Returns Numeric(18,3)
As
Begin
Declare @I int
Declare @J int
Declare @A int
Declare @B int
Declare @C int
Declare @K int
Declare @Rst Numeric(18,3)

Declare @Matrix Table (i int,j int,val int)

Insert into @Matrix Values(0,0,0)
Set @i=1
While @i<=Len(@Str1)
Begin
insert into @Matrix Values(@i,0,@i)
Set @I=@I+1
End

Set @j=1
While @j<=Len(@Str2)
Begin
insert into @Matrix Values(0,@j,@j)
Set @j=@j+1
End

Set @i=1
While @I<=Len(@Str1)
Begin
Set @j=1
While @J<=Len(@Str2)
Begin
If (substring(@Str1, (Select Val From @Matrix Where i=0 And j=@j), 1) = substring(@Str2, (Select Val From @Matrix Where i=@I And j=0), 1))
Select @C =Val From @Matrix Where i=@i-1 And j=@j - 1
Else
Select @C =Val+1 From @Matrix Where i=@i-1 And j=@j - 1

Select @A =Val+1 From @Matrix Where i=@i - 1 And j=@j
Select @B =Val+1 From @Matrix Where i=@i And j=@j-1

If (@A <= @B and @A <= @C)
Insert Into @Matrix Values( @i,@j,@A)
If (@B <= @C and @B <= @A)
Insert Into @Matrix Values( @i,@j,@B)
If (@C <= @A and @C <= @B)
Insert Into @Matrix Values( @i,@j,@C)
Set @J=@J+1
End
Set @I=@I+1
End

If Len(@Str1) > Len(@Str2)
Set @K = Len(@Str1)
Else
Set @K = Len(@Str2)
Select @Rst=1-1.0*Max(Val)/@K From @Matrix Where i= Len(@Str1) And j= Len(@Str2)
return @Rst
End

⑷ sqlServer中如何比较两个字符串相似!

把String1分解为3个单词(book,net,job)
每个单词到数据库里模糊查询:select * from t1 where f1 like '%book%'

⑸ pl/sql 比较两个相似字符串,请高手支招,想了几天都搞不定。

case when instr(A.字段名,substr(B.字段名,decode(instr(B.字段名,'('),0,length(B.字段名),instr(B.字段名,'(')) > 0 then
'对'
else
'错'
end
条件自己写。
解释一下。
decode(instr(B.字段名,'('),0,length(B.字段名),instr(B.字段名,'('))
先取'('的位置。如果没有,就是直接等于自己的长度。
然后 substr(B.字段名,decode(。。。)
截取括号前面的部分。
最后,再查找有没有去掉括号后的部分。要是有返回值就大于0,所以是对的。反之是错。

⑹ 在SQL语句中,怎么比较两个字符串是相同的,where条件应该怎么写

where '字符串a'='字符串b'

⑺ 怎么用sql语句来判断两条短信的相似度,也就是两个字符串的相似度,相似度的理论是什么

如表格A中字段a1有一条字符串记录Rec1内容为 “我的家在哪里?”;然后要从B表中找出一条字符串记录Rec2内容与Rec1最相似的,如:“我的家在浙江?”
select A.a1, max(DIFFERENCE(A.a1,B.相应字段))
from A cross join B
group by A.a1

⑻ sql如何高效的比对两个字符串的相似度

如表格A中字段a1有一条字符串记录Rec1内容为 “我的家在哪里?”;然后要从B表中找出一条字符串记录Rec2内容与Rec1最相似的,如:“我的家在浙江?” select A.a1, max(DIFFERENCE(A.a1,B.相应字段)) from A cross join B group by A.a1

⑼ SQL里面如何计算两列地址(中文)的相似度

相似度公式:Kq*q/(Kq*q+Kr*r+Ks*s)(Kq>0,Kr>=0,Ka>=0)设q是字符串1和字符串2中都存在的单词的总数,s是字符串1中存在,字符串2中不存在的单词总数,r是字符串2中存在,字符串1中不存在的单词总数,t是字符串1和字符串2中都不存在的单词总数。

createFUNCTION[dbo].[F_strcompare](@str1VARCHAR(8000),
@str2VARCHAR(8000))
RETURNSVARCHAR(10)
AS
BEGIN
DECLARE@iINT,
@jINT,
@kINT,
@retVARCHAR(10)

SELECT@i=MAX(strlen),
@j=MIN(strlen),
@k=0
FROM(SELECTstrlen=Len(@str1)
UNION
SELECTstrlen=Len(@str2))t

IF(@j=0)
RETURN'0'

WHILE@j>0
BEGIN
IFSubstring(@str1,@j,1)=Substring(@str2,@j,1)
SET@k=@k+1

SET@j=@j-1
END

SET@ret=Rtrim(CAST(@k*100.0/@iASNUMERIC(3,0)))

RETURN@ret
END

⑽ SQL有字符串相似度的函数吗

相似度有很多定义,可以写自定义函数,sql server 还能用
CLR
【 ChinaKing (青春大概相似) 中提到: 】
: SQL里有没有字符串相似的函数?
: 类似于php里面的 similar_text()
: 就是给两个字符串 得到相似度