SQL在两个字段中查找不同的字符

时间:2013-07-05 01:43:02

标签: sql tsql compare

我有一个包含两个字段的表:firstnamedb1和firstnamedb2

我需要获得那些不匹配但又想知道有多少个字符不同的字符。

例如,如果我有:

firstnamedb1        firstnamedb2
RICHARD             RICHRAD

然后我知道这是一个不匹配的结果,但我也知道只有两个字符是不同的。

这样我就知道“可能”NO MATCH结果是一个错误的错误,可以很容易地手动修复。

希望有人可以帮助我。非常感谢

1 个答案:

答案 0 :(得分:0)

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

如果这样可以解决您的问题,请标记为答案。