我有一个包含两个字段的表:firstnamedb1 和 firstnamedb2
我需要得到那些不匹配的,但也想知道有多少字符不同。
例如,如果我有:
firstnamedb1 firstnamedb2
RICHARD RICHRAD
然后我知道这是一个 NO MATCH 结果,但我也知道只有 2 个字符不同。
这样我就会知道“也许” NO MATCH 结果是一个错误类型错误,可以很容易地手动修复。
希望可以有人帮帮我。非常感谢
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
如果这解决了您的问题,请标记为答案。