SQL在两个字段中查找不同的字符
我有一个包含两个字段的表:firstnamedb1和firstnamedb2 我需要得到那些不匹配的字符,但也想知道有多少字符是不同的 例如,如果我有:SQL在两个字段中查找不同的字符,sql,tsql,compare,Sql,Tsql,Compare,我有一个包含两个字段的表:firstnamedb1和firstnamedb2 我需要得到那些不匹配的字符,但也想知道有多少字符是不同的 例如,如果我有: firstnamedb1 firstnamedb2 RICHARD RICHRAD 然后我知道这是一个不匹配的结果,但我也知道只有两个字符是不同的 这样我就知道“可能”没有匹配结果是一个错误类型错误,可以很容易地手动修复 希望有人能帮助我。非常感谢选择firstnamedb1、firstnamedb2、d
firstnamedb1 firstnamedb2
RICHARD RICHRAD
然后我知道这是一个不匹配的结果,但我也知道只有两个字符是不同的
这样我就知道“可能”没有匹配结果是一个错误类型错误,可以很容易地手动修复
希望有人能帮助我。非常感谢选择firstnamedb1、firstnamedb2、dbo.numdiffchars(firstnamedb1、firstnamedb2)
select firstnamedb1, firstnamedb2, dbo.numdiffchars(firstnamedb1, firstnamedb2)
from yourTable
where firstnamedb1 <> firstnamedb2
create function dbo.numdiffchars(@n1 varchar(60), @n2 varchar(60))
returns int
as begin
declare @baselen int,
@extension int,
@xpos int,
@numdiff int;
if len(@n1) <= len(@n2) select @baselen = len(@n1)
else select @baselen = len(@n2)
if len(@n1) < @baselen select @extension = (@baselen - len(@n1))
else if len(@n2) < @baselen select @extension = (@baselen - len(@n2))
select @xpos = 0, @numdiff = 0;
while @xpos < @baselen begin
select @xpos = @xpos + 1
if substring(@n1, @xpos, 1) <> substring(@n2, @xpos, 1)
select @numdiff = @numdiff + 1
end
return @numdiff + @extension
end
从你的桌子上
其中firstnamedb1 firstnamedb2
创建函数dbo.numdiffchars(@n1 varchar(60),@n2 varchar(60))
返回整数
作为开始
声明@baselen int,
@扩展名int,
@xpos int,
@numdiff int;
如果len(@n1),我想不出一个解决方案,它的实现将不会异常繁琐。再加上很多西方名字只有一个字母不同(Jay Jan、Alex Alec、Simon Simone),我不禁质疑你的方法。为了计算有多少字母不同(以及处理不同长度的名称),您可能需要做一些更粗糙的事情,并在看到其他内容时执行。Paul和Paula可能是幸福的婚姻(或者你所代表的任何关系),Paula临床上很沮丧,因为人们不断地把她的名字改成Paul。我在运行它,但我得到的是空的,有什么线索吗?谢天谢地,我唯一想到的是被比较的名字中是否有一个是空的;我还没有构建适应这种情况的函数,但是如果是这种情况,请将select语句更改为:select firstnamedb1、firstnamedb2、dbo.numdiffchars(isnull(firstnamedb1)、、isnull(firstnamedb2.),从您的表中选择isnull(firstnamedb1)、)isnull(firstnamedb2“”)